-2

入力テキスト フィールドが有効かどうかを確認し、CSS コードに対応する要素にクラス名を追加するか、有効な場合は何もしない関数を作成しました。

function checkInputText(inputType, elem, oldClass, classError) {
    var inputT = document.getElementById(elem);
    var oldClass = oldClass;
    var b = regex[inputType].test(inputT.value)
    if (!b) {
        inputT.className = classError + ' ' + oldClass;
        return false;
    } else {
        inputT.className = oldClass;
    }
}

ただし、なんらかの理由で、関数が .test() 関数を呼び出すと、イベントに対して初めて true が返されますが、もう一度試すと false が返されます。

完全なコードはこちらhttp://jsfiddle.net/assuredlonewolf/cscyB/2/

4

1 に答える 1

5

「exec (またはそれと組み合わせて) と同様に、同じグローバル正規表現インスタンスに対して複数回呼び出されたテストは、前の一致を超えて進みます。」https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp/test

lastIndexを 0 にリセットするか、テストごとに新しい正規表現を作成することで、この動作を回避できます。

于 2012-04-10T02:05:31.810 に答える