2013-05-06 64 views
6

我很努力瞭解啓用/禁用jQuery UI按鈕的選項。啓用禁用與jQuery的jQuery UI按鈕

在從前的任何一種按鈕的我用:

jQuery(".mybutton").prop('disabled', false); 

根據您是否想要啓用/禁用這將是假/真。

這似乎也適用於jquery ui按鈕。我在做什麼是檢查一定數量並在第一次加載頁面時禁用按鈕。

但有人可能會更改,刪除的東西(通過AJAX調用)的計數值:

//delete 
jQuery(document).on("click", ".deletebutton", function() { 
    if (confirm("Are you sure you want to delete?")) 
    { 
     var hash = jQuery(this).data("delete"); 
     var $this = jQuery(this); 
     jQuery.ajax({ 
      url: "index.php?option=com_cam&task=delete&hash="+ hash +"&"+getToken()+"=1&format=raw", 
      dataType: 'json', 
      type: "POST", 
      success: function(data){ 
       if (data.type == 'error') 
       { 
        //error message printed to user 
       } 
       else 
       { 
        $this.closest("tr").remove(); 
        //deleted so decrement and check if you have exceeded your limit 

        count=count-1; 
        if (count >= limit) 
        { 
          //disable buttons 
          jQuery(".mybutton").button("option", "disabled", true); 
        } 
        else 
        { 
         //enable add buttons and hide message 
         jQuery(".mybutton").button("option", "disabled", false); 
         //jQuery(".mybutton").attr('disabled', false); 
         //jQuery(".mybutton").prop('disabled', false); 

        } 
       } 
      } 
     }); 
    } 
}); 

那麼這應該再次啓用該按鈕。 propattr或此post似乎爲我工作。只有當我這樣做:

jQuery(".mybutton").button("option", "disabled", false); 

我想我不明白爲什麼prop不會當它工作禁用我的按鈕這個環境中工作?最好的做法是始終使用按鈕setter

+3

使用按鈕**小部件**時,必須通過**小部件的界面**禁用**小部件**。 – 2013-05-06 20:09:47

回答

9

在引擎蓋下,該按鈕已被禁用,但是,您看到的是其樣式已由jQuery UI設置的按鈕。

jQuery UI不會使用禁用的屬性設置樣式(如[disabled=disabled])。相反,它向按鈕添加了兩個類,其中包含禁用的按鈕樣式:ui-button-disabledui-state-disabled

有四種方式我知道它會工作。

  1. 推薦方式:電話jQuery('.mybutton').button('disable')

  2. 你的方式(也建議):呼叫jQuery(".mybutton").button("option", "disabled", true);

  3. 這是罰款:呼叫jQuery(".mybutton").prop('disabled', true).button('refresh')。這刷新按鈕UI。

  4. 不推薦的方法:直接從按鈕添加/刪除類。jQuery(".mybutton").addClass('ui-button-disabled ui-state-disabled');

希望這解釋了爲什麼它以這種方式工作。

2

您不再使用純正的<button>元素,因此更改屬性不會產生太大影響。 jQuery-UI使用助手,單獨的事件和其他需要選項訪問器的細節來包裝整個DOM元素。

只要您使用.button,請堅持使用API​​並使用disabled設置。 (這適用於各種小部件 - datepicker,滑塊等)。只要將原始DOM元素看作標準佔位符,僅用於保留表單的功能,但不再是主要的UI元素。