3

我想要一个<p:inputText>只接受数字而不接受任何其他字符的。是否有可能让用户只能输入数字而其他字符被禁用?如果是这样,请让我知道如何。

4

1 回答 1

4

最后,<h:inputText>and<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 方法以定义不同的行为。

于 2013-01-30T04:16:06.570 回答