验证动态表单 - 在满足所有条件之前进展

时间:2015-11-18 20:27:52

标签: javascript jquery forms validation

我创建了一个表单,并且我正在尝试为一组选择字段添加验证,这些字段是双倍的'动态 - 也就是说,根据用户输入,可能有x个组,每个组中有y个选择字段。每个选择字段都需要答案。

我遇到的问题是,如果已经回答了少于现有总数的选择字段,则表单可以进入下一页 - 如果我没有回答任何选择字段,则验证工作得很完美,但即使有人回答,我仍然会收到警报,但表格无论如何都会进入下一步。以下是代码示例('未更改'是我在选择中为占位符选项指定的值):

 $(".species_select").each(function(){        
       if (this.value === "unchanged"){
         alert("Please select the species")
       }

       else{
          PROCEED...
       };

从概念上讲,我理解为什么会发生这种情况 - 这种情况至少会被满足一次并导致表格继续进行。对于具有固定数量字段的表单,我会使用||在所有需要验证的领域之间,但在这种情况下不会飞行。

也许我的方法在这里是完全错误的...基本上,我需要表格来对待它,就好像它可以继续进行,直到每个.species_select都有一个不是"未更改的值"。 / p>

非常感谢您的想法和专业知识。

3 个答案:

答案 0 :(得分:3)

尝试以下列方式使用a标志:

var proceed = true;
$(".species_select").each(function() {        
    if (this.value === "unchanged") {
    alert("Please select the species");
    proceed = false;
    }
});
if (proceed) {
    // PROCEED...
}

答案 1 :(得分:1)

您需要使用preventDefault()

取消提交表单
$( "#myformID" ).submit(function( e) {
    $(".species_select").each(function(){        
        if (this.value === "unchanged"){
            e.preventDefault();
            alert("Please select the species")
        }
        else{
          PROCEED...
       };  
});

答案 2 :(得分:-1)

您的表单需要

<form onsubmit='return validate(this);'>

验证功能需要

    function validate(frm) {
      var OK = true;
      //process controls
      //--- if control is not valid
      ok = false;
      ...
      return OK;
    }

另请注意,如果有任何Javascript错误,则表单将自动提交。