Simeon
Simeon

Reputation: 7792

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

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

Upvotes: 12

Views: 69359

Answers (5)

Nublodeveloper
Nublodeveloper

Reputation: 1311

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).

Upvotes: 29

Daniel
Daniel

Reputation: 37061

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

Upvotes: 6

Benjamin Fuentes
Benjamin Fuentes

Reputation: 693

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:

Upvotes: 1

Cjxcz Odjcayrwl
Cjxcz Odjcayrwl

Reputation: 22847

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.

Upvotes: 3

roel
roel

Reputation: 2003

You could use a validator. Or the validaterange and define a minimum and maximum.

Upvotes: 0

Related Questions