如何在Primefaces输入文本中禁用特殊字符和字母?

时间:2013-01-30 03:46:43

标签: jsf jsf-2 primefaces

我想要一个<p:inputText>,它只接受数字,而不是任何其他字符。是否可以使用户只能键入数字而其他字符被禁用?如果是这样,请告诉我如何。

1 个答案:

答案 0 :(得分:3)

最后,<h:inputText><p:inputText>组件将呈现<input type="text" /> HTML组件。您唯一需要的是应用JavaScript方法来限制文本中允许的字符。

了解这一点,您可以使用问题HTML Text Input allow only Numeric input中提供的任何方法。我将根据帖子的第二个答案向您展示一个例子:

<h:head>
    <script type="text/javascript">
        //<![CDATA[
        var numericRegex = /\d+\.?\d*/;
        function validateNumericInput(evt, text) {
            var theEvent = evt || window.event;
            var key = theEvent.keyCode || theEvent.which;
            key = String.fromCharCode( key );
            if (key === '.') {
                theEvent.returnValue = (text.indexOf(key) < 0);
            } else {
                var regex = /\d/;
                if( !regex.test(key) ) {
                    theEvent.returnValue = false;
                    if(theEvent.preventDefault) theEvent.preventDefault();
                }
            }
        }
        //]]>
    </script>
</h:head>
<h:body>
    Try to write a non-numeric
    <p:inputText onkeypress="validateNumericInput(event, this.text)" />
</h:body>

请注意,此示例仅允许编写正实数,只需更改JavaScript方法即可定义不同的行为。