Jquery 警报未按我希望的方式工作

Jquery 警报未按我希望的方式工作,jquery,Jquery,在此情况下,请按照以下步骤操作: 1:当你打开小提琴时,点击“添加问题”按钮两次,这将在下面添加2行 2:点击“提交详细信息”按钮,会出现以下错误: 你在问题编号上有错误:2 您没有输入有效的问题 请输入此问题所需的答案数 请输入此问题的分数数字 您没有输入有效的问题 请输入此问题所需的答案数 请输入此问题的分数数字 这是不正确的,上面的警报显示所有错误和错误的问题编号。如果多行中存在错误,则应显示包含错误的第一行的编号,并在警报中显示这些错误。警报应显示以下内容: 您在问题编号1上有错误 您没

在此情况下,请按照以下步骤操作:

1:当你打开小提琴时,点击“添加问题”按钮两次,这将在下面添加2行

2:点击“提交详细信息”按钮,会出现以下错误:

你在问题编号上有错误:2

您没有输入有效的问题

请输入此问题所需的答案数

请输入此问题的分数数字

您没有输入有效的问题

请输入此问题所需的答案数

请输入此问题的分数数字

这是不正确的,上面的警报显示所有错误和错误的问题编号。如果多行中存在错误,则应显示包含错误的第一行的编号,并在警报中显示这些错误。警报应显示以下内容:

您在问题编号1上有错误

您没有输入有效的问题

请输入此问题所需的答案数

请输入此问题的分数数字

另一个问题是,如果在第二行中填写文本区域和文本框,则会在下面显示此警报:

你在问题编号上有错误: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;
}
函数验证(){
var_qid=“”;
var_msg=“”;
alertValidation=“”;
//请注意,这只是它的声明。。。
$(“tr.optionandswer”)。每个(函数(){
_qid=$(“td.qid”,this.text();
_msg=“您在问题编号上有错误:”+\u qid+“\n”;
$(“.textAreaQuestion”,this).each(函数(){
如果(!this.value | | this.value.length<5){
alertValidation+=“\n您没有输入有效的问题\n”;
}
如果(alertValidation!=“”){
返回false;//停止每个循环
}
});
$(“.numberTranswerTXtrow”,this).each(函数(){
var currenttotal=$(this).closest('.optionandswer').find('.answerBtnsOn').length;
如果(!this.value){
alertValidation+=“\n请输入此问题所需的答案数\n”;
}
如果(alertValidation!=“”){
返回false;//停止每个循环
}
});
$(“.txtWeightRow”,this).each(函数(){
如果(!this.value){
alertValidation+=“\n请输入此问题的分数数字\n”;
}
如果(alertValidation!=“”){
返回false;//停止每个循环
}
});
});
如果(alertValidation!=“”){
警报(_msg+alertValidation);
返回false;
}
返回true;
}

我认为您必须退出
$(“tr.optionandswer”)
中的每个
,以防
alertValidation
有内容(您可以将if
(alertValidation!=“”)替换为
if(alertValidation)


查看

您必须检查外部循环(
$(“tr.optionandswer”).each()
)中是否已发现任何错误,并通过返回
false来停止它

在外部每个循环中添加此项,并将
alertValidation
声明为
var-alertValidation
,否则它将在全局范围内

   if(alertValidation != ""){
       return false;
   }
我已经在你的提琴演示中修复了。看一看