web-dev-qa-db-fra.com

Comment limiter une entrée à un nombre variable de nombres uniquement avec l'élément inputMask de PrimeFaces

Je dois définir quelque chose de similaire à cette regex:

[0-9]{1, 5}

Sur un élément PrimeFaces <inputMask>:

<p:inputMask mask="regexGoesHere" value="#{someBean.val}"/>

J'ai regardé la vitrine de PrimeFaces, mais je ne savais pas comment le faire.

Alors, est-ce que quelqu'un sait comment le faire de quelque manière que ce soit en plus de JavaScript?

Je ne cherche pas exactement une solution avec <inputMask> tout ce qui m'empêcherait de taper des lettres dans l'entrée du côté client est OK.

Merci

10
Simeon

Si vous voulez ou devez limiter la longueur aussi, vous pouvez faire quelque chose comme ceci:

<p:inputMask 
   mask="9?9999"
   maxlength="5"
   slotChar=" "
   value="#{someBean.val}" />

où l'utilisateur ne peut entrer qu'entre 1 et 5 chiffres, ou les suivants pour quatre chiffres, etc.

<p:inputMask 
   mask="9?999"
   maxlength="4"
   slotChar=" "
   value="#{someBean.val}" />

Avant PrimeFaces 5.1: utilisez placeHolder au lieu de slotChar ( Issue 7324 ).

26
Nublodeveloper

Le Masked Input Plugin est le plugin jquery original utilisé par Primefaces. Vous y trouverez beaucoup plus d’informations sur son utilisation. Il existe également plusieurs exemples de code p: input-mask dans ce PDF PrimeFaces: Plus d’éléments d’entrée voir page 24

5
Daniel

KeyFilter à partir de PrimeFaces Extensions ressemble exactement à ce dont vous avez besoin: http://fractalsoft.net/primeext-showcase-mojarra/views/keyFilter.jsf

Selon la documentation et les exemples, il est piloté par regexp et fonctionne exactement comme il se doit: bloquer la possibilité de taper quelque chose qui ne passe pas à regexp.

3
Danubian Sailor

essayez juste ceci:

<p:inputMask maxlength="5">
        <pe:keyFilter regEx="/[\d]/" />
</p:inputMask>

maxlength: limite le nombre de caractères à 5 max regEx: n'autorise que le caractère décimal lors de l'appui sur une touche

nb:

1
Benjamin Fuentes

Vous pouvez utiliser un validateur. Ou validerange et définir un minimum et un maximum.

0
roel