0

[このサイトのさまざまなユーザーから提供された]このコードのチャンクがあり、1つではなく複数のフィールドをチェックできるように変更する必要があります。2番目の関数に引数を追加する必要があるのか​​、変数checkStringを配列に変換する必要があるのか​​わかりません。

function getField(fieldType, fieldTitle) {
    var docTags = document.getElementsByTagName(fieldType);
    for (var i = 0; i < docTags.length; i++) {
        if (docTags[i].title == fieldTitle) {
            return docTags[i]
        }
    }
}

function checkField() {
    var checkString = getField('input', 'fieldtocheck').value;
    if (checkString != "") {
        if (/[^A-Za-z\d]/.test(checkString)) {
            alert("Please enter only alphanumeric characters for the field fieldtocheck");
            return (false);
        }
    }
}

「getfield」を引数として「checkfield」にフィードするのが最善のオプションだと思いますが、どうすればよいでしょうか。

助けていただければ幸いです。

4

1 に答える 1

2

関数をより汎用的にし、クラスを使用してフィールドを識別します。

function checkFields(className, regex) {
    var inputs = document.getElementsByClassName(className);

    for (var i = 0; i < inputs.length; i++) {
        if (!regex.match(inputs[i].value)) {
            return false;
        }
    }

    return true;
}

function validate() {
    if (!checkFields('alphanum', /^[A-Za-z\d]+$/)) {
        alert('Please enter only alphanumeric characters');
    }
}

HTML は次のようになります。

<input type="text" class="alphanum" />

はるかに単純な (そしてより良い、IMO) アプローチは、jQuery 検証プラグインを使用することです。

于 2012-12-12T00:44:56.370 に答える