我的应用程序问题是here。请按照以下步骤操作:
当您打开应用程序时,单击“打开网格”并选择选项4.按钮A,B,C和D将显示在下面。
在“答案数”文本框中,键入数字1.然后单击A,B,C或D中的1个按钮(所选按钮将变为绿色)。完成后,再单击“添加问题”按钮两次。
正如您所看到的,您在顶部输入的详细信息将在下方的2个新行中显示。在您添加的第一个新行中,在“答案数”列下的文本框中,将数字1更改为0,在第二行中将答案文本框的数量从1更改为2.现在单击“提交详细信息” “下面的按钮。
应出现一条警告,指出“您选择的答案少于所需金额”。它还说“您选择的答案多于所需金额”。这是正确的,因为在第一行中,选择了一个答案但在文本框中它表示您想要0个答案,而在第二行中有一个答案被选中但在文本框中它表示您想要2个答案。
我的问题:
我的问题是,除了在两行的警报中显示两条消息之外,我想要的是它将显示第一行中显示错误的警报。在用户对第一行中的错误进行排序后,如果第二行中出现错误,则当用户再次单击“提交详细信息”按钮时,则显示第二行中显示错误消息的警报。
我希望第一行显示警报,例如:
请修正问题1中的错误: “你选择的答案少于所需金额”。
对于第二行的警报我想要这个:
请修正问题2中的错误: “你选择了比所需金额更多的答案”。
下面是相关的验证码(我认为问题是var上下文,因为我认为变量是错误的,但我不确定):
function validation() {
alertValidation= "";
// Note, this is just so it's declared...
$(".numberAnswerTxtRow").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";
}
else if (currenttotal > $(this).val()){
alertValidation += "\nYou have selected more answers than the required amount\n";
}
else if (currenttotal < $(this).val()) {
alertValidation += "\nYou have selected less answers than the required amount\n";
}
});
if(alertValidation != "")
{
alert(alertValidation);
return false;
}
希望这是有道理的,如果没有,请向我发表评论。
下面是使用textarea验证对validation()函数的编辑:
function validation() {
$(".textAreaQuestion").each(function() {
alertValidation= "";
if (!this.value || this.value.length < 5) {
alertValidation += "\nYou have not entered a valid Question\n";
}
if(alertValidation != "")
{
alert(alertValidation);
return false;
}
});
$(".numberAnswerTxtRow").each(function() {
alertValidation= "";
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";
}
else if (currenttotal > $(this).val()){
alertValidation += "\nYou have selected more answers than the required amount\n";
}
else if (currenttotal < $(this).val()) {
alertValidation += "\nYou have selected less answers than the required amount\n";
}
if(alertValidation != "")
{
alert(alertValidation);
return false;
}
});
return true;
}
答案 0 :(得分:0)
如果任何错误条件有效,您应该通过返回false
来停止每个循环。试试这个。
function validation() {
var alertValidation = "";
// Note, this is just so it's declared...
$(".numberAnswerTxtRow").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";
}
else if (currenttotal > $(this).val()){
alertValidation += "\nYou have selected more answers than the required amount\n";
}
else if (currenttotal < $(this).val()) {
alertValidation += "\nYou have selected less answers than the required amount\n";
}
if(alertValidation != ""){
return false;//Stop the each loop
}
});
if(alertValidation != "")
{
alert(alertValidation);
return false;
}
}
答案 1 :(得分:0)
将你的if检查放在循环中。如果第一行发现错误,则应该发出警报并返回。如果没有,它将继续检查第二行,如果发现错误则返回那里。
function validation() {
$(".numberAnswerTxtRow").each(function() {
alertValidation= "";
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";
}
else if (currenttotal > $(this).val()){
alertValidation += "\nYou have selected more answers than the required amount\n";
}
else if (currenttotal < $(this).val()) {
alertValidation += "\nYou have selected less answers than the required amount\n";
}
if(alertValidation != "")
{
alert(alertValidation);
//Ends the loop
return false;
}
});
//Do other stuff here...
}