jquery验证不适用于相关的html

时间:2012-12-13 05:03:03

标签: jquery html

http://jsfiddle.net/7sARw/17/

上面是我申请的一个方面。我很抱歉这个小提琴中有很多代码,但代码需要让应用程序正常工作,我真的试图将代码减少很多。

但请按照以下步骤使用jsfiddle:

  1. 当您打开小提琴时,单击“打开网格”链接并选择“真或假”选项。您将看到“True”和“False”按钮出现,文本输入显示1。

  2. 如果单击“添加问题”按钮,则会显示一条警告,表明您选择的答案少于要求金额。这是正确的,因为文本输入声明您需要1个答案,但您没有选择答案。因此,选择“True”或“False”,然后单击“添加问题”按钮。

  3. 您会看到它在您输入的内容的表格中附加了一行。现在在行内关闭所选按钮,以便既不打开“True”或“False”按钮。现在在应用程序的底部,单击“提交详细信息”按钮。您意识到没有出现警告,表明您选择的答案较少。

  4. 这是我遇到的问题,当我点击“提交详细信息”按钮时,如果没有出现警告表明您选择了较少的答案,该怎么办?我知道提交按钮会显示其他验证消息,所以我如何调用该函数没有任何错误,它在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;
    } 
    

2 个答案:

答案 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> idoptionAndAnswerclass也是optionAndAnswer,好吧不是错误,但是jQuery选择器正在选择{{1}使用<tr> class,并且HTML中不存在此内容