Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to restrict an input to a variable amount of numbers only with PrimeFaces inputMask element

Tags:

jsf

primefaces

I need to define something similar to this regex:

[0-9]{1, 5}

On a PrimeFaces <inputMask> element:

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

I looked at the PrimeFaces showcase, but I couldn't figure out how to do it.

So does anyone know how to do it in any way besides JavaScript ?

I'm not exactly looking for a solution with <inputMask> anything that would restrict me from typing letters in the input on the client side is OK.

Thanks

like image 812
Simeon Avatar asked Jan 13 '12 09:01

Simeon


4 Answers

If you want or need to limit the length too, you could do something like this:

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

where the user can only enter 1 to 5 digits, or the following for four digits and so on

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

Prior to PrimeFaces 5.1: use placeHolder instead of slotChar (Issue 7324).

like image 163
Nublodeveloper Avatar answered Oct 27 '22 07:10

Nublodeveloper


The following Masked Input Plugin is the original jquery plugin that is being used by Primefaces , you can find much more information about its usage, also there are several p:input-mask code example in this PDF PrimeFaces: More Input Elements look at page 24

like image 23
Daniel Avatar answered Oct 27 '22 05:10

Daniel


KeyFilter from PrimeFaces Extensions looks exactly as something you need: http://fractalsoft.net/primeext-showcase-mojarra/views/keyFilter.jsf

According to documentation and example, it is driven by regexp, and functions exactly as it should: blocking the ability to type something not passing to the regexp.

like image 44
Danubian Sailor Avatar answered Oct 27 '22 07:10

Danubian Sailor


just try this :

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

maxlength : limit the number of caracters to 5 max regEx : only authorize decimal caracter on key press

nb:

like image 24
Benjamin Fuentes Avatar answered Oct 27 '22 05:10

Benjamin Fuentes