在此jsfiddle中,请按以下步骤操作:
1:当您打开小提琴时,单击“添加问题”按钮两次,这将在下方添加2行。
2:点击“提交详细信息”按钮,它会出现此错误:
您在问题编号上有错误:2
您尚未输入有效的问题
请输入您对此问题所需的答案数
请输入此问题的商标数量
的图表您尚未输入有效的问题
请输入您对此问题所需的答案数
请输入此问题的商标数量
的图表
这是不正确的,上面的警告显示所有错误和错误的问题编号。应该发生的是,如果多行中存在错误,则应显示包含错误的第一行的编号,并在警报中显示这些错误。警报应显示:
您在问题编号上有错误:1
您尚未输入有效的问题
请输入您对此问题所需的答案数
请输入此问题的商标数量
的图表
另一个问题是如果你在第二行填写textarea和文本框,它会在下面显示以下警告:
您在问题编号上有错误:2
您尚未输入有效的问题
请输入您对此问题所需的答案数
请输入此问题的商标数量
的图表
以上警告不正确,因为它说明了错误所在的错误问题编号。问号应该是1号,而不是2号。那么如何解决这个问题。
以下是验证警报的validation()函数的代码:
function validation() {
var _qid = "";
var _msg = "";
alertValidation = "";
// Note, this is just so it's declared...
$("tr.optionAndAnswer").each(function() {
_qid = $("td.qid",this).text();
_msg = "You have errors on Question Number: " + _qid + "\n";
$(".textAreaQuestion",this).each(function() {
if (!this.value || this.value.length < 5) {
alertValidation += "\nYou have not entered a valid Question\n";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
$(".numberAnswerTxtRow",this).each(function() {
var currenttotal = $(this).closest('.optionAndAnswer').find('.answerBtnsOn').length;
if (!this.value) {
alertValidation += "\nPlease Enter in the Number of Answers you Require for this question\n";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
$(".txtWeightRow",this).each(function() {
if (!this.value) {
alertValidation += "\nPlease enter in a figure for Number of Marks for this Question\n";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
});
if (alertValidation != "") {
alert(_msg + alertValidation);
return false;
}
return true;
}
答案 0 :(得分:1)
我认为您必须退出.each
$("tr.optionAndAnswer")
alertValidation
,以防(alertValidation != "")
有内容(如果if (alertValidation)
{{1}},则可以替换{{1}}
答案 1 :(得分:1)
您必须检查外部循环($("tr.optionAndAnswer").each()
)中是否已找到任何错误,并通过返回false
来停止它。
在每个循环外部添加它,并将alertValidation
声明为var alertValidation
,否则它将在全局范围内。
if(alertValidation != ""){
return false;
}
我已经修复了你的小提琴演示看看。