segunda-feira, 24 de setembro de 2012

Javascript e expressões regulares na introdução de números

Uma das situações que pegam em um INPUT de números decimais em formulários HTML é a questão da entrada de números com parte decimal.

Em nosso caso vamos evitar que o usuário digite um número com separadores de milhar, e substituir o ponto decimal "." por vírgula, para evitar problemas posteriores com o formato internacional comumente aceito.

Formulário de INPUT

O formulário contém um campo de Input com um evento para processamento das teclas APÓS serem liberadas após pressionadas:


 <form name="frm" method="post" action="prg.asp">
<input name="nome" id="nome" type="text" size=10 onKeyUp="nome_onChange(this);">
<input type="submit" value="OK">
</form>


A cada tecla liberada, é chamada a função javascript nome_onChange:



function nome_onChange(o){
var str = o.value;
window.status = str;
// Teste de ponto
var RegExp = /(\.)/;
var ar = str.match(RegExp);
if( ar != null ) {
if( ar[1] == "." ) {
// Ponto decimal detectado
str = str.replace(/\./g,',');
o.value = str
}
}
// Teste de vírgula
var RegExp = /\,[\d]{1,}(\,)/;
var ar = str.match(RegExp);
if( ar != null ) {
if( ar[1] == "," ) {
// Vírgula detectada
str = str.replace(/\,$/g,'');
o.value = str
}
}
// Teste de caracteres estranhos
var RegExp = /[\d|\-|\+][\'|\"|\!|\@|\#|\$|\%|\¨|\&|\*|\(|\)|\_|\-|\+|\=|\s|\{|\}|\`|\´|\^|\~|\[|\]]/;
var ar = str.match(RegExp);
if( ar != null ) {

// caracter detectado
str = str.replace(/.$/g,'');
o.value = str

}
}

Esta função checa, a cada tecla liberada se foi digitada uma vírgula "," ou ponto "." decimal, fazendo a troca no momento devido.









Nenhum comentário:

Postar um comentário