如何为一系列数字创建<p:inputmask> </p:inputmask>

时间:2013-03-19 15:32:32

标签: jsf-2 primefaces

我想在对话框中屏蔽输入文本字段,我使用的是primefaces 3.5 SNAPSHOT。以下对我来说很有用,除了我想在掩码中包含数字10。

  <p:dialog id="inputDlg" modal="true" widgetVar="inputDlgWV">
     <p:inputMask id="ageInput" mask="9" placeHolder=" " value="#{bean.age}"/>
  </p:dialog>

我尝试使用模式 f:validateRegex ,它正确验证但不掩盖输入,我的主要目标是屏蔽并仅允许0-10的数字。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

根据Primefaces'组件<p:inputMask>所基于的Masked Input Plugin for jQuerymask属性接受9作为数字,a作为字母,*作为两者之一,?作为可选用户输入,其他任何作为预定义文本。

在这种情况下,您所需的属性将为mask="9?9"。当然,它会接受0-99范围内的数字。如果你想要一个严格的0-10范围,你需要为keydown事件绑定一个额外的处理程序,如:

$(document).ready(function() {
    $("#input-mask").keydown(function(e) {
        var key = (e.keyCode ? e.keyCode : e.which);
        if (!((key == 46) || (key == 8))) {
            if ((key < 48) || (key > 57)) {
                event.preventDefault();
            } else {
                var s = $(this).val();
                var l = s.length;
                if((l >= 2) || ((l == 1) && !((s == '1') && (key == 48)))) {
                    event.preventDefault();
                }
            }
        }
    });
});

根据我的口味,这对用户不够友好,而且在您的位置我会选择<p:spinner>