Javascript 验证时,所有文本输入均为空

Javascript 验证时,所有文本输入均为空,javascript,jquery,Javascript,Jquery,我的问题是,如果每个问题都有空白文本输入,我如何才能让验证消息出现 这是一把小提琴,您可以测试它: 下面是validation()函数代码: function validation() { // only keeping track of the final message var alertValidation = "", // toggle for showing only one error showOnlyOneError = true;

我的问题是,如果每个问题都有空白文本输入,我如何才能让验证消息出现

这是一把小提琴,您可以测试它:

下面是validation()函数代码:

function validation() {

    // only keeping track of the final message
    var alertValidation = "",
        // toggle for showing only one error
        showOnlyOneError = true;

    $("input[data-type='qmark']").each(function(i) {  
        var questions = $(this).attr("data-qnum");
        var marks = parseInt($("[class*=q" + (i+1) + "_ans_text]").text()); 
        var txtinput = $(this).val(); 

        // the message for this question
        var msg = '';

        if (txtinput == '') {
            msg += "\n\u2022 You have not entered in a value in all the Indivdiaul Marks textbox \n";
        }

        if (marks < 0) {
            msg += "\n\u2022 Your Total Marks Remaining does not equal 0 \n - You Need To Remove " + Math.abs(marks) +  " Marks";   
        } else if (marks > 0) {
            msg += "\n\u2022 Your Total Marks Remaining does not equal 0 \n - You Have " + marks +  " Marks Remaining";   
        }

        // if there is an error for the question, add it to the main message
        if (msg.length) {
            alertValidation += alertValidation.length ? '\n\n' : '';
            alertValidation += "You have errors on Question Number: " + questions + "\n";
            alertValidation += msg;
            // stop if we only care about the first error
            return !showOnlyOneError;
        }
    });

    // show the error messages
    if (alertValidation != "") {
        alert(alertValidation);
        return false;
    }

    return true;
}
函数验证(){
//只跟踪最后的消息
var alertValidation=“”,
//用于仅显示一个错误的切换
showOnlyOneError=true;
$(“输入[data type='qmark'])。每个(函数(i){
var questions=$(this.attr(“数据qnum”);
var marks=parseInt($(“[class*=q”+(i+1)+“\u ans\u text]”)。text();
var txtinput=$(this.val();
//这个问题的信息是什么
var msg='';
如果(txtinput==''){
msg+=“\n\u2022您尚未在所有Indivdiaul标记文本框中输入值\n”;
}
如果(分数<0){
msg+=“\n\u2022您剩余的总分不等于0\n-您需要删除”+Math.abs(分数)+“分数”;
}否则如果(标记>0){
msg+=“\n\u2022您的总剩余分数不等于0\n-您有”+分数+“剩余分数”;
}
//如果问题有错误,请将其添加到主消息中
如果(消息长度){
alertValidation+=alertValidation.length?'\n\n':'';
alertValidation+=“您在问题编号上有错误:“+问题+”\n”;
alertValidation+=msg;
//如果我们只关心第一个错误,就停止
返回!仅显示任何错误;
}
});
//显示错误消息
如果(alertValidation!=“”){
警报(警报验证);
返回false;
}
返回true;
}
这是您的“第一个错误后返回”。如果您填写第一个框,但它有其他错误,您将只得到这些错误-第二个框不会被检查,您永远不会发现它是空的。最明显的修复方法是
showOnlyOneError=false

如果这不是您想要的,那么您必须更详细地解释所需的
showOnlyOneError
语义


(还有一个提示:将错误推入数组,然后将它们与
“\n\n”
连接起来,这比每次检查消息字符串是否为空要轻松得多。)

这是我不知道从何开始的问题之一。我似乎找不到你的问题,但我要花很长时间才能解释为什么我会做这些完全不同的事情。例如,设置唯一类,然后执行
$(“[class*=q”+(i+1)+“\u ans\u text]”)的操作这不是很实用,类是泛型的,等等。我之所以需要showOnlyOneError=true,是因为如果多个问题有错误,它只会显示包含错误的第一个问题编号的错误。在使用
showOnlyOneError=true
对其进行小提琴测试并查看警报,然后使用
showOnlyOneError=false
对其进行文本输入时,您可以看到它复制了空白文本输入的错误消息