Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Penny_Lane

somente numeros

Recommended Posts

Gente.. eu tenho essa função para que nesse campo o usuário possa digitar somente número, sem o hífem que viria junto com o número.

A função tá funcionando beleza o Firefox, mas no IE7 não funciona.

No IE7 somente funciona o backspace, o delete e o tab, mas os números mesmo não.

 

ae vai a função e a maneira que eu estou chamando ela..

 

function semhifen(e) {
	var nav4 = window.Event ? true : false;
	if(nav4) {
		var whichCode = e.which;
	} else {
		var whichCode = e.keyCode;
	}

	if (whichCode > 47 && whichCode < 58 || whichCode == 8 || whichCode ==9 || whichCode== 0) {
		return true;
	} else {	
		return false;
	}

}

<td>numero:</td>
<td><input id="num" name="num" type="text" maxlength="8" size="8" onKeypress=" return semhifen(event);"></td>

aguardo galera.. :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta mudar essa linha aki:

if (whichCode > 47 && whichCode < 58 || whichCode == 8 || whichCode ==9 || whichCode== 0) {

 

Para isso aqui:

if ((whichCode > 47 && whichCode < 58) || whichCode == 8 || whichCode ==9 || whichCode== 0) {

 

Vê se rola...

 

ABRAX!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Enton Berkowitz, valeu a ajuda ae.... mas não funcionou...

eu já tinha testado desse jeito tb... no IE7 continua não funcionando...

 

Mas uma coisa eu descobri agora.. se eu copiar e colar usando o botão direito do mouse.. o campo aceioa tanto letra quanto número.. mas não está aceitando a digitação... E isso do copiar e colar, vale tanto pro IE7 quanto pro FF...

 

muito estranho isso.. pq eu qq lugar que eu to buscando, os exemplos são.. pra não dizer iguais.. bem parecidos com esse que eu estou usando. :wacko:

 

e agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor forma é utilizar Expressões Regulares.

Tenta isso:

function semhifen(val) {
  return val.replace(/\D/g,"");
}
e no seu INPUT muda o evento onKeyPress para isto:

onKeypress="semhifen(this.value);"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. olha só Berkowitz, agora funcionou nos dois.. mas tá aceitando letras e números... e eu quero somente números..

 

function semhifen(e) {

var nav4 = window.Event ? true : false;

if(window.event) { // Internet Explorer

nav4 = event.keyCode;

}

else { // Firefox

nav4 = e.which;

}

if(nav4 >= 48 && nav4 <= 57 || nav4 == 8 || nav4 == 9 || nav4 == 0) return true;

return false;

}

[/code]

 

a chamada da função:

<td>numero:</td>
<td><input id="num" name="num" type="text" maxlength="8" size="8" onKeypress=" return semhifen(event);"></td>

valeu Berkowitz.. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... tenta utilizar da forma que te mandei (com expressão regular)! Só vai aceitar números...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah.. olha só Berkowitz... de novo usei sua função e ela deixa passar letras..

Mas tudo bem.. eu vou deixa redondo aqui com a minha função mesmo, dae depois eu faço mais testes com a sua.. pq deve ser alguma coisa bem tosca que eu estou fazendo de errado...

Mas depois eu paro nela e faço ela funcionar.. hehehe

 

Valeu mais uma vez...

abraços.. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. ainda mexendo com esse código, mas agora com uma função para máscara de moeda.. de novo funcionou perfeitamente no FF e no IE7 teve uma falha... uma pequena falha.. mas que eu gostaria de tirar..

Veja bem.. eu coloquei no input do meu formulário o máximo de entrada de dados : maxlength="14" .. mas o Ie7 não está respeitando esse atributo...

só pra garantir.. vou colocar aqui o script que eu peguei de um colega que postou num forum aqui no imasters mesmo...

 

i++)
	if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
	aux = '';
	for(; i < len; i++)
	if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
	aux += key;
	len = aux.length;
	if (len == 0) objTextBox.value = '';
	if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
	if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;
	if (len > 2) {
	aux2 = '';
	for (j = 0, i = len - 3; i >= 0; i--) {
	if (j == 3) {
	aux2 += SeparadorMilesimo;
	j = 0;
	}
	aux2 += aux.charAt(i);
	j++;
	}
	objTextBox.value = '';
	len2 = aux2.length;
	for (i = len2 - 1; i >= 0; i--)
	objTextBox.value += aux2.charAt(i);
	objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
	}
	return false;
}

e minha chamada...

<td>valor: </td>
<td><input type="text" id="valor" name="valor" maxlength="14" size="14" onKeypress="java script: return(validacaoMoeda(this,'.',',',event))" /></td>

valeus!! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

[ ]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po cara... me desculpa! Te mandei a função tooooda errada! uaaUAUAauA....

Mil perdões!

 

Pra ela funcionar, faz as seguintes mudanças:

-- FUNÇÃO

function semhifen(val) {
		val.value = val.value.replace(/\D/g,"");
	}
-- CHAMADA

onKeyUp="semhifen(this);"

Agora vai rolar! ^_^

 

ABRAX!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahh.. olha só. agora ela até funcionou.. mas de uma maneira estranha..

pq ainda tá deixando digitar letras... tipo.. se fico segurando a tecla da letra "A" por exemplo, ele escreve.. mas quando eu solto a tecla apaga..

Já com os números está perfeito...

isso deve ser coisa da maneira que a função está sendo chamada... heheh eu vou ver melhor isso..

 

muito obrigada, Berkowitz http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

Agora eu estou travada em outras coisitas.. uma delas é no post anterior.. essa nem é tão urgente.. e a outra é com a validação da data...

 

Tipo eu tenho duas datas para fazer a validação.. a data inicial e a final.. só que os campos das datas estão sepadados:

data_inicial_dia / data_inicial_mes / data_inicial_ano (3 campos input)

data_fim_dia / data_fim_mes / data_fim_ano (3 campos input)..

 

além disso.. esses inputs são feitos via smarty em outra página .tpl ... Então a entrada do dia inicial e fim é a mesma..

 

Eu não to conseguindo enxengar como fazer isso..... tipo.. pegar cada campo pra fazer a validação de dias no mês.. mês.. ano bissexto... e em qual momento chamar a função para fazer essa validação...

eu acho que é no momento que o foco sai do campo ano... mas mesmo assim.. não to conseguindo..

 

ah!!!! Será que alguém tem uma luz??? :blink:

[ ]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá.. beleza.. o mais difícil eu consegui enxengar e fazer....

 

Mas agora está faltando mesmo resolver o problema da diferença do maxlength no FireFox e no IE7...

 

Alguém ae sabe o porque dessa diferença????

 

valeus... :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho é q o maxlength no IE7 ta funfando certinho aki pra mim.

Como c ta fazendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então.. to fazendo assim no meu input...

 

<td>valor: </td>
<td><input type="text" id="valor" name="valor" maxlength="14" size="14" onKeypress="java script: return(validacaoMoeda(this,'.',',',event))" /></td>

Pra mim assim tb está certo.. mas num sei.. não está funcionando...

 

[ ]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... da uma olhada na tua função validacaoMoeda. Vê o q ela ta retornando... vê se tem algum erro nela, tals.

Ou então manda o código todo para darmos uma olhada. Ok?

 

Abrax!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse sempre funcionou para mim...

 

<form action=""onkeypress="return nue(event)">

function nue(e){if(window.event){key=e.keyCode;}else if(e.which){key=e.which}if(key!=8||key<48||key>57)return(((key>47)&&(key<58))||(key==8));{return true;}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.