我希望我的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
。基本上,我希望对所有字段进行检查,但对于那个字段。
答案 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表单的能力,如果有的话。