Estou utilizando o primefaces e preciso utilizar o maxLength, porém ele só funciona em alguns componentes, como o inputText, ele funciona, mas no inputNumber já não funciona, e se eu colocar convertNumber no inputText ele também não funciona.
Existe alguma outra forma de se fazer esse controle?
O atributo correto seria maxlength e não maxLength, da uma conferida ai…
E aproposito, aqui funciona corretamente
<p:inputNumbermaxlength="3"></p:inputNumber>
R
Rodrigo_Marden
@Mike Eu digitei errado apenas aqui, na página está maxlength, mas mesmo assim não funciona.
Estranho funcionar ai, eu pesquisei e vi falando que por padrão ele não funciona para Number por uma questão de design mesmo
R
Rodrigo_Marden
A questão do inputNumber eu consegui resolver de outra forma, porém nesse caso que eu preciso de um pattern ele n funciona.
<p:inputTextid="valor"maxlength="5"value="#{aicController.selected.valor}"title="#{bundle.CreateAicTitle_valor}"required="true"requiredMessage="Preencha o campo Valor."><f:convertNumberpattern="#,##0.00"/></p:inputText>
M
Mike
Seria isso aqui que você precisa?
<p:inputNumberid="valor"value="#{aicController.selected.valor}"maxValue="99999.99"title="#{bundle.CreateAicTitle_valor}"padControl="true"decimalSeparator=","symbol="R$"thousandSeparator="."required="true"requiredMessage="Preencha o campo Valor."></p:inputNumber>
R
Rodrigo_Marden
Aqui está dizendo que o padControl não está definido no componente do primefaces
M
Mike
Qual a versão do seu PrimeFaces?
Eu estou usando a 6.2
R
Rodrigo_Marden
Versão 6.0
O que esse componente faz?
M
Mike
padControl força a ficar com 00 nas casas decimais
Ex: 50 vai para 50.00
R
Rodrigo_Marden
Entendi, vou ver se é viável eu atualizar para esta versão
M
Mike
Talvez o padrão do padControl seja true, ai nem precisa por.
No seu caso, testa o que eu te mandei sem o padControl
R
Rodrigo_Marden
Sem o padControl, quando eu digito 1234, fica 1.234 e não 12,34 como eu gostaria que ficasse
M
Mike
O padControl so força o 00, ele não irá transformar 1234 em 12,34
R
Rodrigo_Marden
Então não teria como eu utilizar, eu precisaria de um pattern="#,##0.00", mas o inputNumber não suporta isso.
M
Mike
O que você pode fazer é criar isso na mão, utilizando ajax.
A cada tecla que der, chama um método, se o conteudo tiver tamanho 2, adiciona uma virgula, se tiver 5, adiciona um ponto
R
Rodrigo_Marden
Eu tenho uma jquery que faz isso, só que ela inibi o max, e não fica um limite, haha
M
Mike
Hahaha, uma vez eu fiz com cpf, com valor monetario não deve ser tão diferente.
Qualquer coisa só dar um toque.
Eu não sei outra solução pro seu caso
R
Rodrigo_Marden
O problema está sendo exatamente com a precisão que eu preciso colocar, ele não ta enxergando como um número dentro da jQuery pra fazer esse limite, quando defino a precisão pra 0, ele funciona direito, mas ai não fica 12,34 ao digitar 1234. Acho que vou ter de deixar sem limite mesmo.
M
Mike
La para as 20:00 vou tentar fazer o que eu te disse, eu estava afim de fazer algo parecido mesmo.
Se quiser tentar quebrar a cabeça em outra coisa do seu projeto, quebra ae haha
Ai assim que eu conseguir, posto aqui a solução.