Pessoal estou com um problema, já dei uma boa pesquisada e infelizmente não achei uma solução válida, meu problema é o seguinte, preciso de uma máscara para moeda.
O que tinha antes era uma aplicação jsp onde usava o jquery.maskMoney e jquery.maskedinput para minhas máscaras.
Estamos migrando a aplicação para jsf 2.0 com primefaces, o problema é que o código que usava antes não funciona mais.
Antes usava:
jQuery(function($){
$("#tele").mask("(99) 9999-9999");
$("#cpf").mask("999.999.999-99");
$("#cnpj").mask("99.999.999/9999-99");
$("#datven").mask("99/99/9999");
$("#valpri").maskMoney({symbol:"R$",decimal:",",thousands:"."});
$("#valjur").maskMoney({symbol:"R$",decimal:",",thousands:"."});
$("#valmul").maskMoney({symbol:"R$",decimal:",",thousands:"."});
});
O componente Masked Input do prime faces resolve meu problema parcialmente, mas no caso de moeda não;
Alguém poderia me ajudar?
Grato, Alysson Lemos;
rapaz , utilizo o primefaces, mas algumas coisas eu coloco jquery mesmo.
No caso de um input para valor monetario, utilizei h:inputtext com jquery
$j('.valor').maskMoney({symbol:"R$",decimal:",",thousands:"."});
é só ter cuidado para não haver conflitos entre o jquery do prime com o seu jquery
[quote=rjbcordeiro]rapaz , utilizo o primefaces, mas algumas coisas eu coloco jquery mesmo.
No caso de um input para valor monetario, utilizei h:inputtext com jquery
$j('.valor').maskMoney({symbol:"R$",decimal:",",thousands:"."});
é só ter cuidado para não haver conflitos entre o jquery do prime com o seu jquery[/quote]
quando eu utilizo java com jquery, não uso muito o id e sim class (dica)
[quote=rjbcordeiro][quote=rjbcordeiro]rapaz , utilizo o primefaces, mas algumas coisas eu coloco jquery mesmo.
No caso de um input para valor monetario, utilizei h:inputtext com jquery
$j('.valor').maskMoney({symbol:"R$",decimal:",",thousands:"."});
é só ter cuidado para não haver conflitos entre o jquery do prime com o seu jquery[/quote]
quando eu utilizo java com jquery, não uso muito o id e sim class (dica)[/quote]
cara foi mau, não sei o que ta acontecendo com a minha net, eu clico uma vez e manda duas mensagens.
rjbcordeiro, se não for pedir muito, tu teria uma exemplo?
Por que assim, eu devo importar o jquery ainda? ou o nativo do prime resolve?
Resolvido o problema!
<script>
jQuery(function($){
$("#valorPrincipal").maskMoney({symbol:"R$ ", decimal:",", thousands:".", showSymbol:true});
});
</script>
<h:form prependId="false">
<h:inputText id="valorPrincipal" maxlength="16" size="16" tabindex="8" value="#{darf.valorPrincipal}"/>
</h:form>
Ao definir a atributo prependId como false o render mantem o nome do id sem alteração.
Grato!
no template da aplicação -> usei facelets
<h:head>
<h:outputScript name="jquery-1.5.min.js" library="javascript" target="head"/>
...
<h:outputScript name="script.js" library="javascript" target="head"/> <!-- aqui meu script -->
</head>
script.js
var $j = jQuery.noConflict(); //coloco isto para não ter conflito com outras versões do jquery ( no caso do proprio componente) vc tb pode abrir a lib e atualizar o jquery lá mesmo ...
//para minhas funções
$j(function(){
...
$j('.valor').maskMoney({symbol:"R$",decimal:",",thousands:"."}); //ai todo componente que eu colocar class='valor' vai pegar esta mascara
...
}
no xhtml
<h:inputText styleClass="valor" value="#{produtoPrecoController.selected.valor}" title="#{bundle.CreateProdutoPrecoTitle_valor}" required="true" requiredMessage="#{bundle.CreateProdutoPrecoRequiredMessage_valor}"/>
pronto acho que é isto, qualquer coisa posta ai.
[quote=rjbcordeiro]no template da aplicação -> usei facelets
<h:head>
<h:outputScript name="jquery-1.5.min.js" library="javascript" target="head"/>
...
<h:outputScript name="script.js" library="javascript" target="head"/> <!-- aqui meu script -->
</head>
script.js
var $j = jQuery.noConflict(); //coloco isto para não ter conflito com outras versões do jquery ( no caso do proprio componente) vc tb pode abrir a lib e atualizar o jquery lá mesmo ...
//para minhas funções
$j(function(){
...
$j('.valor').maskMoney({symbol:"R$",decimal:",",thousands:"."}); //ai todo componente que eu colocar class='valor' vai pegar esta mascara
...
}
no xhtml
<h:inputText styleClass="valor" value="#{produtoPrecoController.selected.valor}" title="#{bundle.CreateProdutoPrecoTitle_valor}" required="true" requiredMessage="#{bundle.CreateProdutoPrecoRequiredMessage_valor}"/>
pronto acho que é isto, qualquer coisa posta ai.[/quote]
Mas o seguinte, estou tentando usar o jquery.maskMoney.js.
O que tentei foi isso aqui. mas não tive sucesso.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<title>Teste</title>
<h:outputScript library="js" name="jquery/jquery.js" target="head" />
<script type="text/javascript" src="../js/jquery.maskMoney.js"></script>
<h:outputScript target="head">
$ = jQuery.noConflict();
$(document).ready(function() {
$j('.valor').maskMoney({symbol:"R$",decimal:",",thousands:"."});
});
</h:outputScript>
</h:head>
<h:body>
<h:form prependId="false">
<fieldset>
<legend>Formulário</legend>
Valor do Principal<br />
<h:inputText id="valorPrincipal" styleClass="valor" maxlength="16"
size="16" tabindex="8" value="#{darf.valorPrincipal}"
required="true" requiredMessage="*" immediate="true">
<f:convertNumber locale="pt_BR" />
</h:inputText>
<h:message for="valorPrincipal" style="color: red" />
</fieldset>
</h:form>
</h:body>
</html>
O que fiz de errado?
Grato.