0

whileフォーム内の 1 つを除くすべての要素を反復処理したいと考えています。これは私のコードです:

while (i < elnum && !empty) {
        if (form.elements[i].value == "" && form.elements[i] != form.referral) {
            error.innerHTML += 'All fields are required.</br>';
            empty = true;
        }
        i++;
    }

elnum要素の数はどこにありますか。

残念ながら、form.referral空のままにしても、if. 基本的に、私はすべてのフィールドに対してチェックを行いたいのですが、それはそのフィールドに対してです。

4

1 に答える 1

2

要素を比較しようとするのではなく、次のようなことを試してください。

if( form.elements[i].name == "referral") continue;

空の値をチェックする条件の前に、それをループのすぐ内側に置きます。

そうは言っても、次のようなことを行う方が良いかもしれません:

while(i < elnum) {
    if( form.elements[i].hasAttribute("required") && form.elements[i].value == "") {
        error.innerHTML += "All fields are required.<br />";
        // re-add `empty=true` if the variable is needed elsewhere
        // if it's only used to end the loop, then this is better:
        break;
    }
    i++;
}

そして、必ずrequiredすべての必須フィールドに属性を追加してください。これは、HTML5 フォームを処理するブラウザーのネイティブ機能を利用するため、より優れたソリューションです (存在する場合)。

于 2013-04-22T21:29:51.820 に答える