Renderização de mascaras com Jquery +PrimeFaces

6 respostas
erasmo_tec

Galera bom dia

Estou com uma duvida sobre o comportamento do Jquery na minha aplicação.

em uma determinada tela tenho uma mascara para hora que funciona perfeitamente, o botão que faz o submit é do prime faces e seto a propriedade ajax = “true” pois não quero fazer uma requisição sem ajax e apos esse processo quando entro na tela para fazer novos inputs a mascara não funciona mais.
Caso eu troque o valor do ajax para false ou dê f5 na minha pagina a mascara funciona perfeitamente?

Alguem sabe o porque isso funciona dessa maneira?

6 Respostas

Rodrigo_Sasaki

Você tentou dar um update no campo que é enviado na requisição ?

erasmo_tec

tentei mas não funcionou.

erasmo_tec

Estava observando que o update do prime faces não funciona para atualizar um campo por exemplo de dentro do mesmo form que submeteu as informações.

caso alguem tenha conseguido fazer esse update dentro do mesmo form me informe.

Nader_Daher

Qual a máscara u vc está utilizando???

verifique se o inputMask do primefaces não serve para vc…

Já precisei usar uma máscara para moeda com primefaces, como o inputMask não serviu, tentei sem sucesso utilizar Jquery, da uns conflitos com o primefaces, que usa jquery…

A solução pra mim foi utilizar javascript msm…

A única coisa ue fiz foi ter q colocar a função javascript dentro do form, pra poder funcionar, ficou feio o código, mas foi o único jeito que funcionou…

luxu

Amigo warrior, poderia colocar esse função javascript bem como fez pra chamá-lo, preciso de uma solução mas até agora naum consegui nd…

Nader_Daher

luxu,

eu uso a função abaixo, eu uso facelets, e tive que colocar a função dentro do onde estava o form pra poder funcionar...

<script>
            function mascara(o, f) {
              v_obj = o;
              v_fun = f;
              setTimeout("execmascara()", 1);
            }

            function execmascara() {
              v_obj.value = v_fun(v_obj.value);
            }

         function valor(v) {
        v = v.replace(/\D/g, "");
        v = v.replace(/[0-9]{15}/, "inválido");
        v = v.replace(/(\d{1})(\d{11})$/, "$1.$2"); // coloca ponto antes dos
        // últimos 11 digitos
        v = v.replace(/(\d{1})(\d{8})$/, "$1.$2"); // coloca ponto antes dos
        // últimos 8 digitos
        v = v.replace(/(\d{1})(\d{5})$/, "$1.$2"); // coloca ponto antes dos
        // últimos 5 digitos
        v = v.replace(/(\d{1})(\d{1,2})$/, "$1,$2"); // coloca virgula antes dos
        // últimos 2 digitos
        return v;
}

                    </script>

no componente:

<p:inputText id="custoUni"  label="custoUni" value="#{ProdutoBean.valor}" maxlength="11" size="20" required="true" requiredMessage="Informe o Preço unitário" onkeypress="mascara(this, valor);" />
Criado 8 de dezembro de 2011
Ultima resposta 2 de jan. de 2012
Respostas 6
Participantes 4