我创建了一个表单,并且我正在尝试为一组选择字段添加验证,这些字段是双倍的'动态 - 也就是说,根据用户输入,可能有x个组,每个组中有y个选择字段。每个选择字段都需要答案。
我遇到的问题是,如果已经回答了少于现有总数的选择字段,则表单可以进入下一页 - 如果我没有回答任何选择字段,则验证工作得很完美,但即使有人回答,我仍然会收到警报,但表格无论如何都会进入下一步。以下是代码示例('未更改'是我在选择中为占位符选项指定的值):
$(".species_select").each(function(){
if (this.value === "unchanged"){
alert("Please select the species")
}
else{
PROCEED...
};
从概念上讲,我理解为什么会发生这种情况 - 这种情况至少会被满足一次并导致表格继续进行。对于具有固定数量字段的表单,我会使用||在所有需要验证的领域之间,但在这种情况下不会飞行。
也许我的方法在这里是完全错误的...基本上,我需要表格来对待它,就好像它可以继续进行,直到每个.species_select都有一个不是"未更改的值"。 / p>
非常感谢您的想法和专业知识。
答案 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错误,则表单将自动提交。