Javascript 验证时,所有文本输入均为空
我的问题是,如果每个问题都有空白文本输入,我如何才能让验证消息出现 这是一把小提琴,您可以测试它: 下面是validation()函数代码: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;
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
对其进行文本输入时,您可以看到它复制了空白文本输入的错误消息