Boa tarde galera!
Sei que o assunto é batido, mas estou com um probleminha meio chato… muito pra ser sincero.
Tenho um campo com uma mascara de data em JavaScript associado.
Essa máscara funciona muito bem, exceto pra esses acentos específicos: " (trema) `’^~ .
É o seguinte, se eu digitar qualquer um desses acentos e logo em seguida apertar o espaço eles vão pro campo desconsiderando a máscara.
Fora isso a máscara funciona perfeitamente?! Seria o caso de desativar a barra de espaço? Caso verdadeiro, como faço?!
Segue o código:
function mascaraData(fld, e) {
var whichCode = (window.Event) ? e.which : e.keyCode;
if(whichCode == 8) //backspace, senao ele nao funciona, outra bizarrice de js
return true;
scriptReturn(e);
if (!isNumber(whichCode)) {
return false;
}
fld.value += String.fromCharCode(whichCode);
formataCampo(fld, '00/00/0000', e);
return false;
}
function formataCampo(campo, Mascara, event) {
var boleanoMascara;
var Digitato = event.keyCode;
exp = /\-|\.|\/|\(|\)|\:| /g
campoSoNumeros = campo.value.toString().replace(exp, "");
var posicaoCampo = 0;
var NovoValorCampo="";
var TamanhoMascara = campoSoNumeros.length;
if (Digitato != 8) { // backspace
for (i=0; i<= TamanhoMascara; i++) {
boleanoMascara = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
|| (Mascara.charAt(i) == "/"))
boleanoMascara = boleanoMascara || ((Mascara.charAt(i) == "(")
|| (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")
|| (Mascara.charAt(i) == ":"))
if (boleanoMascara) {
NovoValorCampo += Mascara.charAt(i);
TamanhoMascara++;
} else {
NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);
posicaoCampo++;
}
}
campo.value = NovoValorCampo;
return true;
} else {
return true;
}
}
function scriptReturn(e) {
if (e.preventDefault) { //standart browsers
e.preventDefault()
} else { // internet explorer
e.returnValue = false
}
}
function isNumber(whichCode) {
var strCheck = '[telefone removido]';
var key = String.fromCharCode(whichCode); // Valor para o código da chave
if (strCheck.indexOf(key) == -1) {
return false; // Chave inválida
}
return true;
}
Opa, coloquei um alert logo na primeira linha da máscara e ele nem é chamado quando coloco alguns daqueles acentos, bizarro isso não?
Alguma luz?
Vlw pessoal!
