3

数字のみを受け入れるためにJSを使用してメカニズムを構築します。

ただし、許可したい: Delete、、、:Backspaceleft arrow right arrow

私が思いついた解決策は次のとおりです。

私がhtmlで書いていると仮定します(イベントを送信するのが悪いことはわかっていますが、Jsコードに焦点を当ててください)

<input  onKeyPress='return CheckDigit(event)'/>



function CheckDigit(evt)
{
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (((charCode >= 48) && (charCode <= 57)) || checkIfDelOrNavigate(charCode)))
        return true;
    return false;
}

  function checkIfDelOrNavigate(c)
    {
        if (((c == 46) || (c == 39) || (c == 37) || (c == 8))) return true;return false;
        /*46=delete , 39,37 = arrows , 8=backspace*/
    }

質問:

  • それは正しい解決策ですか?(そうでない場合は、答えを教えてください)

  • 正規表現チェックに変更できると思います:

コード:

 var regEx =/^[0-9]+$/;    
 isValid = regEx.test(keyChar); 
 return isValid; 

しかし、完全なregEx式はどうなるでしょうか?

Deleteps : 奇妙ですが、私が見たすべてのソリューションは、 , Backspace, left arrow, right arrow chars 、カテゴリ自体だけを許可したくありません。

4

1 に答える 1

3

この質問への回答と次のチェックを組み合わせて、印刷できない文字を許可しながら数字のみをキャプチャするようにします。ただし、貼り付け操作について何かをする必要があります。

return !window.isNaN(String.fromCharCode(event.which))

jsFiddleを参照してください。

于 2012-08-19T14:09:50.123 に答える