2014-06-08 40 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編寫代碼。 –