JSF/Primefaces: как сделать цифру 9 константой в теге Inputmask?

Я хочу добавить маску ввода, которая должна принимать телефонные номера в стандартном формате. Я хочу указать «маску ввода» для стандартного формата номера телефона, например: +92 321 9388233. Итак, как указать +92 как константу в маске? Цифра 9 не ведет себя как постоянная. как сделать цифру 9 постоянной.


person Rabia Naz khan    schedule 10.03.2015    source источник
comment
Может быть, вы можете попробовать это с помощью простого <h:inputText> и проверить его с помощью заданного регулярного выражения на стороне сервера?   -  person alexander    schedule 13.03.2015
comment
Возможный дубликат Escape Number 9 в p:inputmask   -  person borchvm    schedule 25.09.2019


Ответы (2)


Цифра 9 определяется как маска для всех цифр. Если вы хотите, чтобы это было константой, вы можете попробовать написать собственное регулярное выражение следующим образом:

<p:inputMask>
    <pe:keyFilter regEx="\\+92[0-9 ]+" />
</p:inputMask>

Обновить

Я нашел лучшее решение, так как это не работает.

Вы можете переопределить определения масок в JavaScript. Просто добавьте этот скрипт в свой файл:

$.mask.definitions['9'] = '';
$.mask.definitions['d'] = '[0-9]';

И теперь вашей маской для цифр будет буква d, а не цифра 9. Итак, это может быть ваша маска:

<p:inputMask mask="+92 ddd ddddddd" />
person Crepi    schedule 10.03.2015
comment
Это не работает! ‹br/› <p:inputMask id="mnum" value="#{indexManagedBean.mobilenum}" mask="+92-999-9999999" > ‹br/› <pe:keyFilter regEx="\\+92[0-9 ]+" /> ‹br/› </p:inputMask> - person Rabia Naz khan; 11.03.2015
comment
Не используйте атрибут маски, только фильтр. - person Crepi; 11.03.2015
comment
Я все еще не работаю! если я удалю маску, в текстовом поле не появится никакой маски! - person Rabia Naz khan; 12.03.2015
comment
Вы включили расширения PrimeFaces? - person alexander; 12.03.2015
comment
Вы имеете в виду библиотеки простых лиц? @Александр - person Rabia Naz khan; 17.03.2015
comment
Нет, <pe:keyFilter> предоставляется PrimeFaces Extensions. Вам нужно включить xmlns:pe="http://primefaces.org/ui/extensions" в свой xhtml, чтобы использовать его. Также поместите банку в папку lib. См.: stackoverflow.com/questions/16015302/ - person alexander; 17.03.2015
comment
Да, я включил это расширение @alexander - person Rabia Naz khan; 17.03.2015
comment
@RabiaNazkhan Вы рассматривали попытку с <h:inputText>? - person alexander; 17.03.2015
comment
Нет, я использовал ‹p:inputText› - person Rabia Naz khan; 18.03.2015
comment
Я отредактировал ответ и добавил другое решение, так как первое не работает. - person Crepi; 18.03.2015
comment
@Crepi Что делать, если вы не хотите использовать javascript? Поскольку мне не разрешено использовать его моим учителем! - person Rabia Naz khan; 13.04.2015
comment
Поскольку Primefaces использует библиотеку jquery для этой маски, я думаю, что это единственный способ. Без javascript, возможно, вы могли бы просто напечатать обычный текст +92, а затем ввести остальные цифры (+92‹p:inputMask mask=999 9999999 /›)... Пользователю будет ясно, что у него нет чтобы ввести +92, и вы просто делаете это в бэкэнде для каждого ввода... - person Crepi; 14.04.2015

<input type="text" data-inputmask='"mask": "+\\92999-9999999"' data-mask />

Просто добавьте \\ перед 9, и это решит вашу проблему и добавит постоянное значение, например +92, в начале текста.

person Hussain Ali    schedule 07.03.2018