迭代表单中除了一个元素之外的所有元素

时间:2013-04-22 21:22:50

标签: javascript forms

我希望我的while能够遍历表单中除了一个元素之外的所有元素。这是我的代码:

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。基本上,我希望对所有字段进行检查,但对于那个字段。

1 个答案:

答案 0 :(得分: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表单的能力,如果有的话。