我想以这种方式显示我的警报

时间:2012-02-02 18:39:38

标签: jquery

我的应用程序问题是here。请按照以下步骤操作:

  1. 当您打开应用程序时,单击“打开网格”并选择选项4.按钮A,B,C和D将显示在下面。

  2. 在“答案数”文本框中,键入数字1.然后单击A,B,C或D中的1个按钮(所选按钮将变为绿色)。完成后,再单击“添加问题”按钮两次。

  3. 正如您所看到的,您在顶部输入的详细信息将在下方的2个新行中显示。在您添加的第一个新行中,在“答案数”列下的文本框中,将数字1更改为0,在第二行中将答案文本框的数量从1更改为2.现在单击“提交详细信息” “下面的按钮。

  4. 应出现一条警告,指出“您选择的答案少于所需金额”。它还说“您选择的答案多于所需金额”。这是正确的,因为在第一行中,选择了一个答案但在文本框中它表示您想要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;
    }
    

2 个答案:

答案 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...
}