Javascript 动态表单验证-在满足所有条件之前进行
我已经创建了一个表单,我正在尝试为一组“双重”动态的选择字段添加验证,也就是说,根据用户输入,每个字段中可能有x个组和y个选择字段。每个选定字段都需要回答 我遇到的问题是,如果回答的选择字段少于现有的总数,则表单可以进入下一页-如果我没有回答任何选择字段,验证工作将非常完美,但即使回答了一个字段,我仍然会收到警报,但表单仍将进入下一步。下面是一个代码示例(“unchanged”是我给select中的占位符选项的值): 从概念上讲,我理解为什么会发生这种情况——条件至少被满足一次,并导致表单继续。对于具有固定字段数的表单,我会在需要验证的所有字段之间使用| |,但在这些情况下,这不会生效 也许我在这里的做法是完全错误的。。。基本上,我需要表单将其视为在每个.species\u select具有除“unchanged”之外的值之前无法继续Javascript 动态表单验证-在满足所有条件之前进行,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,我已经创建了一个表单,我正在尝试为一组“双重”动态的选择字段添加验证,也就是说,根据用户输入,每个字段中可能有x个组和y个选择字段。每个选定字段都需要回答 我遇到的问题是,如果回答的选择字段少于现有的总数,则表单可以进入下一页-如果我没有回答任何选择字段,验证工作将非常完美,但即使回答了一个字段,我仍然会收到警报,但表单仍将进入下一步。下面是一个代码示例(“unchanged”是我给select中的占位符选项的值): 从概念上讲,我理解为什么会发生这种情况——条件至少被满足一次,并导致表单继续。
非常感谢您的想法和专业知识。尝试以下方式使用a标志:
var proceed = true;
$(".species_select").each(function() {
if (this.value === "unchanged") {
alert("Please select the species");
proceed = false;
}
});
if (proceed) {
// PROCEED...
}
您需要使用
preventDefault()
取消表单提交:
啊,这也是一个很好的答案,尽管我应该说得很具体——这是表单提交之前的验证步骤。非常感谢。非常感谢。真漂亮。我在其他情况下使用过这种“标志”类型的解决方案,不知道为什么我在这里没有想到它。今天盯着电脑看太久了。
var proceed = true;
$(".species_select").each(function() {
if (this.value === "unchanged") {
alert("Please select the species");
proceed = false;
}
});
if (proceed) {
// PROCEED...
}
$( "#myformID" ).submit(function( e) {
$(".species_select").each(function(){
if (this.value === "unchanged"){
e.preventDefault();
alert("Please select the species")
}
else{
PROCEED...
};
});