2012-05-22 70 views
1

我有一個表單,其中有n個選擇題作爲單選按鈕實現(使用jquery-ui)。我希望確保在允許用戶提交表單之前所有問題都已得到解答。我遇到的兩個問題,而執行此驗證:jquery:復位後禁用/啓用按鈕不工作

  • 初始加載,提交按鈕並沒有點擊或鼠標懸停作出反應,直到所有問題都按照需要選擇的響應。但是,它仍然顯得點擊(我想這是淡出)

enter image description here

  • 如果按下復位按鈕,提交按鈕淡出(如需要),但我一旦表格完成,我無法重新啓用提交按鈕。

enter image description here

這是使用javascipt的/ jQuery的我的第一次。出了什麼問題?如何在兩種情況下實現所需的功能?


下面是相關的javascript部分:

$(document).ready(function(){ 
    $('.button').button(); 
    $('.radio-set').buttonset(); 
    $('input[type="submit"]').attr('disabled', true); 

    var progress = 0; 
    var total_fields = $('.response').length 

    /* Track Progress function*/ 
    $('input[type="radio"]').click(function(){   
     progress = $('input[type="radio"]:checked').length 
     $(".progressbar").progressbar({value: (progress/total_fields) * 100}) 
     console.log(progress, total_fields) 
     if(progress == total_fields){ 
     console.log("Hello from inside the conditional") 
     $('input[type="submit"]').removeAttr('disabled'); 
     } 
    }); 

    $('input[type="reset"]').click(function(){ 
     progress = 0 
     $(".progressbar").progressbar({value: 0}) 
     $('input[type="submit"]').attr('disabled', true); 
    }); 
}); 

的形式內的一個問題的實施例(與燻肉填料文本):

 <div class="model_feature"> 
      <span class="feature_name" title="M1">M1</span> 
      <span class="response radio-set"> 
      <label for="M1-1">1</label> 
      <input type="radio" name="M1" id="M1-1" value="1" class="feature-input" autocomplete="off" /> 
      <label for="M1-0">0</label> 
      <input type="radio" name="M1" id="M1-0" value="0" class="feature-input" autocomplete="off" /> 
      <label for="M1-Unk">Unknown</label> 
      <input type="radio" name="M1" id="M1-Unk" value="Unknown" class="feature-input" autocomplete="off" /> 
      </span <!-- close response --> 
      <span class="feature_description">Chicken spare ribs capicola beef brisket hamburger. Kielbasa filet mignon tail ribeye ball tip ground round.</span> 
     </div> <!-- close model_feature --> 

輸入和復位的完整性按鈕:

 <input type="reset" class="button" id="reset-button" /> 
     <input type="submit" class="button" id="submit-button" disabled="disabled" /> 

回答

2

當您將按鈕變成jQuery UI按鈕時,您最好使用Button插件的jQuery UI方法來啓用/取消您的按鈕,而不是直接更改DOMElement屬性disabled

  1. 對於初始狀態,你初始化按鈕,然後只更改disabled屬性,這樣的變化通過按鈕插件考慮。

    // either disable first the button then initialize 
    $('input[type="submit"]').attr('disabled', true); 
    $('.button').button(); 
    

    // set the Button's option 
    $('.button').button(); 
    $('input[type="submit"]').button('option', 'disabled', true); 
    
  2. 對於第二個問題,使用Button的選項設置器,以重新啓用按鈕:

    $('input[type="submit"]').button('option', 'disabled', false); 
    
0

我通過等待解決的問題在添加disabled屬性之前一會兒。例如,

var btn = $("button").first(); 
$(btn).button("loading"); 
$(btn).button("reset"); 
setTimeout(function() { 
    $(btn).prop("disabled", true); 
}, 0); 

一個相同的,所以質疑here和gihub問題here