2012-02-01 106 views
0

下面我有一个变量问题的方法:如何纠正这一变量

function validation() { 

       var context = $('#optionAndAnswer'); 
    var currenttotal = context.find('.answerBtnsOn').length;  

    alertValidation= ""; 
     // Note, this is just so it's declared... 

    $(".numberAnswerTxtRow").each(function() { 
    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"; 
} 
}); 

}

的问题是,对于每一行,它应该在.numberAnswerTxtRow文本框中输入数字,看看如何许多按钮(.answerBtnsOn.length)已被选中。如果选择了比在文本框中输入的数字更多的按钮,则应该显示提示您已经选择了超出要求的更多答案。反之亦然,除了显示消息,说明你选择的答案少于要求的数值之外,它应该做同样的事情。问题在于它无法识别在文本框中输入的数字以及为每行选择的按钮数量。这让我相信我需要将var contextvar currenttotal更改为其他内容,以便识别为每行选择的文本框和按钮。我应该如何改变这些变量?

下面是jQuery的代码,其中的文本框和答案来自:

function insertQuestion(form) { 

      var context = $('#optionAndAnswer'); 
    var currenttotal = context.find('.answerBtnsOn').length; 

     var $tbody = $('#qandatbl > tbody'); 
     var $tr = $("<tr class='optionAndAnswer' align='center'></tr>"); 
     var $noofanswers = $("<td class='noofanswers'></td>"); 
     var $answer = $("<td class='answer'></td>"); 

     $('.numberAnswerTxt', context).each(function() { 
      var $this = $(this); 
      var $noofanswersText = ''; 

       $noofanswersText = $("<input type='text' class='numberAnswerTxtRow answertxt' style='display: block;' onkeyup='numberKeyUp(this)' onkeypress='return isNumberKey(event)' onChange='getButtons()'>").attr('name', $this.attr('name')).attr('value', $this.val())  
      } 
      $noofanswers.append($noofanswersText); 
     }); 

     var $this, i=0, $row, $cell; 
     $('#optionAndAnswer .answers').each(function() { 
      $this = $(this); 
      if(i%7 == 0) { 
       $row = $("<tr/>").appendTo($answer); 
       $cell = $("<td/>").appendTo($row); 
      } 
      var $newBtn = $("<input class='answerBtnsRow answers' type='button' style='display:%s;' onclick='btnclick(this);' />".replace('%s',$this.is(':visible')?'inline-block':'none')).attr('name', $this.attr('name')).attr('value', $this.val()).attr('class', $this.attr('class')); 
      $newBtn.appendTo($cell); 
      i++; 
     }); 

     $tr.append($answer); 
     $tr.append($noofanswers); 
     $tbody.append($tr); 
    } 

行被加入到被称为qandatbl表:

<table id="qandatbl" align="center"> 
<thead> 
<tr> 
    <th class="noofanswers">Number of Answers</th> 
    <th class="answer">Answer</th> 
</tr> 
</thead> 
<tbody></tbody> 
</table> 
+0

你的问题有点不明确。你有没有试过调试你的JS代码?你可以使用Firebug或类似的工具。只需将jQuery选择器粘贴到控制台中,它就会显示返回值 - 使用这种方法,您可以看到选择器是否返回了正确的元素。 – 2012-02-01 07:51:17

回答

0

你的代码看起来复杂的种类和有还有一些部分不见了,所以我只能猜测......为什么你不看看变量中有什么。这应该有助于你弄明白:

var context = $('#optionAndAnswer'); 
console.log(context); 
var currenttotal = context.find('.answerBtnsOn').length; 
console.log(context.find('.answerBtnsOn'));