Acentos em JavaScript

2 respostas
Tchello

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!

2 Respostas

WRYEL

esses tipos de problemas ja me tomaram dias :frowning:
não que seja uma solução definitiva, mas, ja tentou mudar aquele charset do javascript ?

<script type='text/javascript' charset="UTF-8' src='caminho...'></script>

ou até mesmo iso-8959-1 ?
boa sorte :frowning:

Tchello

Então, eu não to tendo problemas com codificação, na verdade os acentos não existem sós no JavaScript (ou o NetBeans ta me sacaneando), pois eu queria identifica-los e elimina-los em uma máscara.
Na verdade eu consegui a solução hoje cedo, usando expressões regulares dizendo exatamente aquilo que eu queira, evitando todo o resto.
Por sorte os acentos se foram =P

Abraços!

Criado 29 de abril de 2009
Ultima resposta 30 de abr. de 2009
Respostas 2
Participantes 2