bom dia a todos…
estou começando no desenvolvimento web com primefaces e estou com duvida de como fazer um inputTex
preciso que ele aceite so numero … preciso que aceite numero no seguinte formato: ‘#.###,00’
alguem pode me ajudar?
bom dia a todos…
estou começando no desenvolvimento web com primefaces e estou com duvida de como fazer um inputTex
preciso que ele aceite so numero … preciso que aceite numero no seguinte formato: ‘#.###,00’
alguem pode me ajudar?
Quem tem format é o próprio JSF.
http://www.mkyong.com/jsf2/jsf-2-convertnumber-example/
http://www.roseindia.net/jsf/convertNumber.shtml
http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_convertNumber.html
ok vou olhar obrigado…
amigo voce não podera usar a mascara pois ela tem tamanho fixo tente usar JavaScript segue um exemplo
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;
}
<p:inputText onkeypress="mascara(this, valor)" />
olhei os links mas é so para outputText, preciso q ja fique formatado quando o usuario começar digitar??
eu tentei aqui e nao funcionou… sera que desta forma dos link tem como?
eu nao sei muito bem javaScript olha se fiz certo pq nao rodou por favos…
[code]
<?xml version="1.0" encoding="ISO-8859-1" ?><ui:composition template="/template/interna.xhtml">
<ui:define name=“titulo”>Tipo Transporte</ui:define>
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>
<ui:define name="corpo">
<h:form id="formulario">
<p:messages />
<h:inputHidden value="#{tipoTransporteBean.tipoTransporte.id_promotor}" />
<p:panel header="Cadastro de Promotor">
<p:toolbar>
<p:toolbarGroup align="left">
<p:commandButton action="#{tipoTransporteBean.save}" value="Salvar"
image="ui-icon ui-icon-disk" ajax="false" />
<p:spacer width="3" />
<p:commandButton action="#{tipoTransporteBean.cancelar}"
value="Cancelar" ajax="false" image="ui-icon ui-icon-cancel" />
</p:toolbarGroup>
</p:toolbar>
<p:spacer height="5" />
<div id="cadastro">
<h:panelGrid columns="1" cellpadding="3" style="width:100%">
<h:panelGrid cellpadding="3" style="width:100%">
<h:outputLabel value="Descrição: " />
<p:inputText value="#{tipoTransporteBean.tipoTransporte.descricao}"
maxlength="200" />
</h:panelGrid>
</h:panelGrid>
<h:panelGrid columns="2" cellpadding="3" style="width:100%">
<h:panelGrid cellpadding="3" style="width:100%">
<h:outputLabel value="Valor: " />
<p:inputText onkeypress="mascara(this, #{tipoTransporteBean.tipoTransporte.valor})" value="#{tipoTransporteBean.tipoTransporte.valor}"/>
</h:panelGrid>
</h:panelGrid>
</div>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
[/code]esqueci de dizer… onde preciso da mascara é nao linha 74
o codigo do evento keypress é o seguinte
onkeypress="mascara(this, valor)"
this = proprio input
valor = nome da função JavaScript
ja tentei assim… mas continuar do mesmo jeito…
onde declarei o esta certo??
Esta errado, ele tem que ficar no head da pagina.
crie uma tag no seu template para voce poder adicionar código no head
tentei tb… parece q ele nem executa o javaScript pq nao da erro nenhum no console… postei meu codigo abaixo… se puder de uma olhar se estar certo por favor…
obrigado pela ajuda
[code]
<?xml version="1.0" encoding="ISO-8859-1" ?> 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}/, "invalido");
v = v.replace(/(\d{1})(\d{11})$/, "$1.$2"); // coloca ponto antes dos ultimos 11 digitos
v = v.replace(/(\d{1})(\d{8})$/, "$1.$2"); // coloca ponto antes dosi ultimos 8 digitos
v = v.replace(/(\d{1})(\d{5})$/, "$1.$2"); // coloca ponto antes dos ultimos 5 digitos
v = v.replace(/(\d{1})(\d{1,2})$/, "$1,$2"); // coloca virgula antes dos ultimos 2 digitos
return v;
}
</script>
<ui:composition template="/template/interna.xhtml">
<ui:define name=“titulo”>Tipo Transporte</ui:define>
<ui:define name="corpo">
<h:form id="formulario">
<p:messages />
<h:inputHidden
value="#{tipoTransporteBean.tipoTransporte.id_tipo_transporte}" />
<p:panel header="Cadastro de Promotor">
<p:toolbar>
<p:toolbarGroup align="left">
<p:commandButton action="#{tipoTransporteBean.save}"
value="Salvar" image="ui-icon ui-icon-disk" ajax="false" />
<p:spacer width="3" />
<p:commandButton action="#{tipoTransporteBean.cancelar}"
value="Cancelar" ajax="false" image="ui-icon ui-icon-cancel" />
</p:toolbarGroup>
</p:toolbar>
<p:spacer height="5" />
<div id="cadastro">
<h:panelGrid columns="1" cellpadding="3" style="width:100%">
<h:panelGrid cellpadding="3" style="width:100%">
<h:outputLabel value="Descrição: " />
<p:inputText
value="#{tipoTransporteBean.tipoTransporte.descricao}"
maxlength="200" />
</h:panelGrid>
</h:panelGrid>
<h:panelGrid columns="2" cellpadding="3" style="width:100%">
<h:panelGrid cellpadding="3" style="width:100%">
<h:outputLabel value="Valor: " />
<p:inputText onkeypress="mascara(this, valor)"
value="#{tipoTransporteBean.tipoTransporte.valor}" />
<p:inputText value="#{tipoTransporteBean.tipoTransporte.valor}">
<f:validateDoubleRange maximum="5"></f:validateDoubleRange>
</p:inputText>
</h:panelGrid>
</h:panelGrid>
</div>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
[/code]O código esta certo só não entendi pq vc colocou dois inputs com o mesmo atributo
<h:panelGrid cellpadding="3" style="width:100%">
<h:outputLabel value="Valor: " />
<p:inputText onkeypress="mascara(this, valor)"
value="#{tipoTransporteBean.tipoTransporte.valor}" />
<p:inputText value="#{tipoTransporteBean.tipoTransporte.valor}">
<f:validateDoubleRange maximum="5"></f:validateDoubleRange>
</p:inputText>
</h:panelGrid>
o input de baixo e pq me disseram pra fazer isso… mas nao deu nao… achei a forma q funcionasse foi a sua… mas nao consegui