1

我想在对话框中屏蔽输入文本字段,我使用的是 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 的数字。谢谢你的帮助。

4

1 回答 1

2

根据Primefaces 组件所基于的 jQuery 的 Masked Input Plugin ,该属性接受数字、字母、两者中的任一个、可选的用户输入以及任何其他预定义文本。<p:inputMask>mask9a*?

在这种情况下,您想要的属性将是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>

于 2013-03-20T18:37:02.280 回答