上面是我申请的一个方面。我很抱歉这个小提琴中有很多代码,但代码需要让应用程序正常工作,我真的试图将代码减少很多。
但请按照以下步骤使用jsfiddle:
当您打开小提琴时,单击“打开网格”链接并选择“真或假”选项。您将看到“True”和“False”按钮出现,文本输入显示1。
如果单击“添加问题”按钮,则会显示一条警告,表明您选择的答案少于要求金额。这是正确的,因为文本输入声明您需要1
个答案,但您没有选择答案。因此,选择“True”或“False”,然后单击“添加问题”按钮。
您会看到它在您输入的内容的表格中附加了一行。现在在行内关闭所选按钮,以便既不打开“True”或“False”按钮。现在在应用程序的底部,单击“提交详细信息”按钮。您意识到没有出现警告,表明您选择的答案较少。
这是我遇到的问题,当我点击“提交详细信息”按钮时,如果没有出现警告表明您选择了较少的答案,该怎么办?我知道提交按钮会显示其他验证消息,所以我如何调用该函数没有任何错误,它在validation()函数内,我正在尝试验证在我遇到问题时选择的答案数。 / p>
以下是jsfiddle底部验证的代码:
function validation() {
var marks = parseInt($("#total-weight").text());
var _qid = "";
var _msg = "";
var maxQuestions = 5;
var questionsAdded = $('tr.optionAndAnswer').length;
var 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";
$(".numberAnswerTxtRow", this).each(function () {
var currenttotal = $(this).closest('.optionAndAnswer').find('.answerBtnsOn').length;
if (currenttotal < $(this).val()) {
alertValidation += "\n\u2022 You have selected less answers than the required amount\n";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
if (alertValidation != "") {
return false;
}
});
if (alertValidation != "") {
alert(_msg + alertValidation);
return false;
}
return true;
}
答案 0 :(得分:2)
这似乎有效:http://jsfiddle.net/7sARw/20/
您似乎没有附加点击处理程序来调用validation()
。我在$(document).ready
函数中添加了此代码:
$('#QandA').submit(function (evt) {
return validation();
});
这就是说,如果validation()
返回true,则提交表单,否则不提交。现在,如果您添加问题,将“答案数”字段更改为2,然后提交,则会显示警报。
答案 1 :(得分:1)
类型不匹配错误:
<table id="optionAndAnswer" class="optionAndAnswer">
$("tr.optionAndAnswer").each(function() {
<table>
id
是optionAndAnswer
,class
也是optionAndAnswer
,好吧不是错误,但是jQuery选择器正在选择{{1}使用<tr>
class
,并且HTML中不存在此内容