使用jquery进行真或假验证

时间:2014-06-18 20:28:05

标签: javascript jquery html

我试图制作一个真假游戏,并需要帮助编写函数来验证用户是对还是错。我的DOM结构如下:

<ul class="multiplechoice_answergroup">
  <li class="multiplechoice_answer True">
    <input class="checkbox" type="checkbox" name="checkme">
    <p>This answer is true</p>
  </li>

  <li class="multiplechoice_answer False">
    <input class="checkbox" type="checkbox" name="checkme">
    <p>This answer is false</p>
  </li>
</ul>

这是我尝试的jquery,但我一直认为答案是正确的:

truefalseSubmit = function() {
    if($('.multiplechoice_answergroup').children('li').hasClass('False') && $('.multiplechoice_answergroup').children('li').find('input[type="checkbox"]:not(:checked)')){
      correctAnswer();
    } else if($('.multiplechoice_answergroup').children('li').hasClass('True') && $('.multiplechoice_answergroup').children('li').find('input[type="checkbox"]:checked')){
        correctAnswer();
    } else {
      incorrectAnswer();
    }

  };

4 个答案:

答案 0 :(得分:0)

而不是

$('.multiplechoice_answergroup').children('li')
   .find('input[type="checkbox"]:checked')

你应该做

$('.multiplechoice_answergroup').children('li')
   .find('input[type="checkbox"]').is(":checked")

原因:

find()返回一个jQuery对象,该对象在JavaScript中验证为true。所以第一个或第二个if表达式总是为真,&&之后的部分始终为真。

当然也在这里:

$('.multiplechoice_answergroup').children('li').find('input[type="checkbox"]').is(":not(:checked)")

答案 1 :(得分:0)

怎么样:

truefalseSubmit = function() {
    $('.multiplechoice_answer input[type="checkbox"]').click(function() {
        /**
         * Check if the parent div where checkbox is, has the class "true"
         */

            if($(this).parent().hasClass('true'))
                return correctAnswer();

        /**
         * Answer is incorrect
         */

            return incorrectAnswer();
    });
}

答案 2 :(得分:0)

我认为它应该是这样的:

truefalseSubmit = function() {
  var $trueCheckbox = $('.multiplechoice_answergroup li.True input[type="checkbox"]');
  var $falseCheckbox = $('.multiplechoice_answergroup li.False input[type="checkbox"]');
  if ($trueCheckbox.is(':checked') && $falseCheckbox.is(':not(:checked)')) {
    correctAnswer();
  } else {
    incorrectAnswer();
  }
};

答案 3 :(得分:0)

为什么不喜欢这样?

HTML:

<ul>
  <li class="answer-button true">
    <p>This answer is true</p>
  </li>

  <li class="answer-button false">
    <p>This answer is false</p>
  </li>
</ul>

JS:

var answerHandler = function (answer) {
    // do something
};
$('.answer-button').click(function () {
    answerHandler($(this).hasClass('true'));
});