1

私はこのコードを持っていますが、なぜこの関数を使用して入力フィールドを検証すると、+キーと-キーを除いてすべてが機能します。私は何を間違えましたか?

function validateNumber(event)
{
    var key = window.event ? event.keyCode : event.which;

    if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 ||
        event.keyCode == 39 || event.keyCode == 107 || event.keyCode == 109 ||
        event.keyCode == 32 )
    {
        return true;
    }
    else if(key < 48 || key > 57)
    {
        return false;
    }
    else return true;
};
4

1 に答える 1

2

189-)と187(をチェックしているのがわかりません=。これは、実際に)と入力したときに発生します+Shiftキーが押されているかどうかを確認することをお勧めし+ます。

すでに述べたように、ユーザー入力を検証するのは全体的に間違った方法です。個々のキーストロークではなく、入力の値を検査する必要があります。

まず、正規表現を使用して任意のテキストをチェックする検証関数を定義します。

function checkArithmetic(str) {
    var regexp = /^[0-9+-]$/;
    return regexp.test(str);
}

次に、入力要素にハンドラーを追加します。

input.addEventListener('input', function (e) {
    var value = input.value;

    if (checkArithmetic(value)) {
        // OK!
    } else {
        // error
    }
}, false);
于 2012-08-03T08:27:42.167 に答える