3

<p:inputText>数字のみを受け入れ、他の文字は受け入れない が必要です。ユーザーが数字のみを入力でき、他の文字が無効になるようにすることは可能ですか? もしそうなら、私にその方法を教えてください。

4

1 に答える 1

4

最終的に、<h:inputText>andコンポーネントはHTML コンポーネント<p:inputText>をレンダリングします。<input type="text" />必要なのは、JavaScript メソッドを適用して、テキストで許可される文字を制限することだけです。

これを知っていれば、質問HTML Text Input allow only Numeric inputで提供されている方法のいずれかを使用できます。投稿の2番目の回答に基づいた例を示します。

<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 に答える