我有一个包含多个动态行的表单,我想在提交表单之前对输入进行一些验证,例如检查所有字段是否都有输入等。 所以当我在提交按钮上有一个onclick-Event时,我会调用这个小功能:
function validateAndSubmit() {
var form = document.getElementById("mainForm");
var formGroups = document.getElementsByClassName("form-group");
for (var x in formGroups) {
// Validation goes here
....
if (valid == false) {
return;
}
}
form.submit();
所以在我的逻辑中,代码应该迭代每个表单组(基本上代表表单中的各个行)并检查它们是否有效。在第一个无效行之后,函数将返回而没有任何结果。但是如果选中了所有formGroup,for-Loop将退出,form.submit();
调用将提交表单。
但是,最终提交不会发生。即使所有表单元素都有有效输入,表单也不会提交。但是,在一些调试过程中,我注释掉了整个for循环,并且表单提交了,但当然没有验证。 所以我假设for循环不能正常退出,并且可能需要一些帮助解决这个问题。
整个项目是用普通的Javascript编写的,但是,我用来动态添加和删除项目的库基于jQuery的表单。
作为参考,您可以在线找到该项目here
答案 0 :(得分:2)
你不应该首先使用for-in。只需使用plain表格:
for(var i=0;i<formGroups.length;i++)
请记住,for-in适用于Objects / dictionaries。例如。 { '键': '值'}
你在循环中得到的第一个“x”是“length” - 你的formGroups [x]变成formGroups [undefined]并立即抛出异常。
答案 1 :(得分:0)
您还可以使用jQuery选择器来获取元素。在您的示例中,
$('.form-control').each(function() {
// Validation goes here
console.log($(this));
});