2014-06-08 36 views
1

我找不到与此问题有关的任何内容。我有一个按钮来检查多项选择问题的答案,以检查它是否正确,如果是,它会使下一个按钮处于活动状态。如果语句在执行之前没有被注册jQuery

尽管没有,或者任何单选按钮被选中,但它仍然执行。

编辑更新:这是现在的工作。感谢您的所有输入!非常赞赏!

next_test_section: function(test_id) { 

    //VALIDATE 
    if($('#q1-a').is(':checked')) { 
     var data = "test_id="+test_id+"&"; 

     async('get_test_data',data, function(response){ 
    /** Response success **/ 

      //$(this).parent().removeClass('has-error'); 

      $('.button-verify').val('Answer Correct'); 
      $('.button-next').attr('disabled', false); 
      //alert($(':checked').val()); 
      $('.stage').html(response.html); 
      user.update_progress_bar(40); 

    }, function(response) { 
     /** Response error **/ 

      //$(this).parent().addClass('has-error'); 
      if ($('.button-verify').val('Answer Incorrect', function() { 
       $('.button-next').attr('disabled', true); 
      })); 

      //alert($(':checked').val()); 
      //alert('NEXT Error!!!') 
      //<input type="button" class="btn btn-success" name="verify" value="Please answer correctly to proceed." /> 

     }); 

    } 
}, 

HTML

        <div class="tab-pane" id="tab11"> 
            <div class="row"> 
            <div class="form-group"> 
             <label class="col-md-3 control-label">Question 1 is asked here.</label> 
             <div class="col-md-9"> 
              <div class="radio"> 
               <label for="radio1"> 
               <input type="radio" id="q1-a" name="q1" value="option1"> Answer 1 
               </label> 
              </div> 
              <div class="radio"> 
               <label for="radio2"> 
               <input type="radio" id="q1-b" name="q1" value="option2"> Answer 2 
               </label> 
              </div> 
              <div class="radio"> 
               <label for="radio3"> 
               <input type="radio" id="q1-c" name="q1" value="option3"> Answer 3 
               </label> 
              </div> 
              <div class="radio"> 
               <label for="radio4"> 
               <input type="radio" id="q1-d" name="q1" value="option4"> Answer 4 
               </label> 
              </div> 
             </div> 
            </div> 
            </div> 
           </div> 

任何想法,为什么这个功能即使我设置的有效VAR假钱?

回答

1

你试图检查无线电与ID #q1-a被选中,你会是这样做的

next_test_section: function(test_id) { 
    if ($('#q1-a').is(':checked')) { 
     var data = "test_id="+test_id+"&"; 

     async('get_test_data',data, function(response){ 

      $('.button-verify').val('Answer Correct'); 
      $('.button-next').prop('disabled', false); 

      $('.stage').html(response.html); 
      user.update_progress_bar(40); 

     }, function(response) { 

      $('.button-verify').val('Answer Incorrect'); 
      $('.button-next').prop('disabled', true); 
     }); 
    } 
}, 

find()只适用于后代元素,来检查当前元素使用is(':checked')

+0

我之前尝试过,它没有工作我可能忘记了一些非常愚蠢的东西。 这是工作。 – Ckracket

+0

我会好心投票,但是我还没有15个声望。尽管感谢您的输入。 – Ckracket

2

尝试

if($('#q1-a').find(':checked').length) var valid = true; 

if(typeof(valid) === "boolean" && valid) { ..... } 
+0

不行不行。 – Ckracket

+0

我的意思是,从我看到的语法是正确的。 – Ckracket

+1

@Ckracket更新了我的答案 - 也许你需要检查'valid'的类型,因为它没有被选择时没有定义(只有当你找到任何选中的复选框时才声明该变量)。 –

0

你变 “合法” 不是假值启动。试试这个:

var valid = false; 
if($('#q1-a').find(':checked')){ 
    valid = true; 
} 

,并把所有的代码jquery的文档内准备:(因此,该代码将运行后的jQuery是准备好了。)

$(document).ready(function(){ 
/// all you function /// and running code. 


}); 
+0

这是行不通的,因为我现在所做的只是在设置服务器之前抛出虚拟数据。 如果'#q1-a'是一个全局答案,这将工作。 感谢您的意见。 – Ckracket

+0

在您的复选框上使用点击绑定。当复选框被点击时。你检查值..对于#q-a,你必须为所有的id编写代码。 –