Mascara Javascript e jsf

0 respostas
S

Pessoal, to com um problemana minha aplicação…

chegou a hora de mascarar uns componentes texto e tudo mais, do jeito que estou fazendo ainda não obtive êxito…

lá vai o que eu estou fazendo…

estou tentando mudar um combo e logo após selecionar qualquer valor no combo quero setar o valor do evento onkeypress de um textfield, colocando nesse evento a função que me servirá de máscara.

então, como estou usando jsf, o bean da minha página seta este onchange para o meu combo:

String autoSelectCondicao = "resolveMascaras(document.getElementById('" + idComboCampos + "'), document.getElementById('" + idInputLocaliza + "'), " + "document.getElementById('" + idInputAte + "'), arrayTipos);"; this.comboCampos.setOnchange(autoSelectCondicao);

onde idComboCampos é o id do combo que vai ser mudado, idInputLocaliza é o id do primeiro input a ser mascarado e idInputAte é o id do segundo input e arrayTipos é um array com valores de acordo com as opcoes do comboCampos.

por exemplo,
valor comboCampos:
arrayTipos[0] - CHARSET
arrayTipos[1] - NUMERO;

então pessoal, depois de ter setado aquele evento onchange, a function javascript resolveMascaras com 4 parametros e outras funções são listadas abaixo, na ordem em que são executadas:

function resolveMascaras(comboField, inputLocaliza, inputAte, arraytipos){
  // esse function compara o tipo de dados que o combo representa com o   
  // arrayTipos:
  // se é charset faz uma mascara, se for numero outra, se for data, faz 
  //  outra.
    if(arrayTipos[comboField.selectIndex] == 'CHARSET'){
        inputAte.onKeyPress("mascara(this, mascCharset);");
    } else {
        if(arrayTipos[comboField.selectIndex] == 'NUMERO'){
            inputAte.onKeyPress("mascara( this, mascNumero)");
        }
        else {
            if(arraytipos[comboField.selectIndex] == 'DATA'){
                inputAte.onKeyPress = mascara(inputAte, mascData)
                inputLocaliza.onKeyPress = mascara(inputLocaliza,mascData)
            }
        }
    }

}
function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}
function execmascara(){
    v_obj.value=v_fun(v_obj.value);
}

ignorem as outras máscaras.

function mascData(v){ v=v.replace(/\D/g,""); //Remove tudo o que não é dígito v=v.replace(/(\d{2})(\d)/,"$1/$2"); //Coloca um ponto entre o terceiro e o quarto dígitos v=v.replace(/(\d{2})(\d)/,"$1/$2"); //Coloca um ponto entre o terceiro e o quarto dígitos //de novo (para o segundo bloco de números) // v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2"); //Coloca um hífen entre o terceiro e o quarto dígitos return v;

a questão grande é…
a expressão para setar um evento onkeypress em tempo de execução por javascript é assim? --> inputLocaliza.onKeyPress = mascara(inputLocaliza,mascData)

outra questão:
se a resposta pra pergunta acima é “sim”, pq entao meu codigo nao funciona?

Criado 10 de julho de 2007
Respostas 0
Participantes 1