【问题标题】:jQuery Mobile how to check if button is disabled?jQuery Mobile 如何检查按钮是否被禁用?
【发布时间】:2011-09-20 04:47:42
【问题描述】:

我在我的 jQuery Mobile 网页上禁用了这样的按钮:

$(document).ready(function() {
    $("#deliveryNext").button();
    $("#deliveryNext").button('disable');
});

我可以启用它

$("#deliveryNext").button('enable');

但是我如何检查按钮是禁用还是启用?

此命令给出“未定义”:

$("#deliveryNext").attr('disabled')

一些想法?

编辑:我发现 $("#deliveryNext").button('disable') 仅用于更改按钮上的样式,单击后工作正常,因此我还需要禁用按钮。我试过 .attr('disabled', 'disabled') 但是当我测试 .attr('disabled') 我得到未定义...

Edit2:更多关于我的“真正”问题How to disable a link button in jQuery Mobile?

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-mobile


    【解决方案1】:

    在尝试检查按钮是否被禁用时遇到了同样的问题。我尝试了多种方法,例如btn.disabled.is(':disabled').attr('disabled').prop('disabled')。但是没有人为我工作。

    一些,例如 .disabled.is(':disabled') 返回 undefined 和其他像 .attr('disabled') 返回错误的结果 - false 当按钮实际上被禁用时。

    但只有一种技术适合我.is('[disabled]')带方括号)。

    所以要确定一个按钮是否被禁用,试试这个:

    $("#myButton").is('[disabled]');
    

    【讨论】:

      【解决方案2】:

      您可以将jQuery.is() 函数与:disabled 选择器一起使用:

      $("#savematerial").is(":disabled")
      

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,我发现这是有效的:

        if ($("#deliveryNext").attr('disabled')) {
          // do sth if disabled
        } else {
          // do sth if enabled 
        }
        

        如果这给你 undefined 那么你也可以使用if 条件。

        当您评估undefined 时,它将返回false

        【讨论】:

          【解决方案4】:

          http://jsfiddle.net/8gfYZ/11/ 看这里..

          $(function(){
          
              $('#check').click(function(){
                  if( $('#myButton').prop('disabled') ) { 
                      alert('disabled'); 
                      $('#myButton').prop('disabled',false);
                  } 
                  else {
                      alert('enabled');
                      $('#myButton').prop('disabled',true);
                  }
              });
          });
          

          【讨论】:

            【解决方案5】:

            试试

            $("#deliveryNext").is('[disabled]');
            

            【讨论】:

              【解决方案6】:

              对我有用的是:

              $("#testButton").hasClass('ui-state-disabled')
              

              但我更喜欢 tomwadley 的回答。

              尽管如此,is(':disabled') 代码对我也不起作用,这应该是最好的版本。不知道,为什么它不起作用。 :-(

              【讨论】:

                【解决方案7】:

                要查看在 jQuery UI 按钮上设置了哪些选项,请使用:

                $("#deliveryNext").button('option')
                

                要检查它是否被禁用,您可以使用:

                $("#deliveryNext").button('option', 'disabled')
                

                不幸的是,如果按钮之前没有显式启用或禁用,上述调用只会返回按钮对象本身,因此您需要首先检查选项对象是否包含“禁用”属性。

                所以要确定一个按钮是否被禁用,你可以这样做:

                $("#deliveryNext").button('option').disabled != undefined && $("#deliveryNext").button('option', 'disabled')
                

                【讨论】:

                  【解决方案8】:

                  试试

                  $("#deliveryNext").is(":disabled")
                  

                  以下代码适用于我:

                  <script type="text/javascript">
                      $(document).ready(function () {
                          $("#testButton").button();
                          $("#testButton").button('disable');
                          alert($('#testButton').is(':disabled'));
                      });
                  </script>
                  <p>
                      <button id="testButton">Testing</button>
                  </p>
                  

                  【讨论】:

                  • 给我错误,但按钮被禁用 $('#deliveryNext').button('disable')
                  • 当你禁用它时元素是否有禁用标签? (可以通过firebug查看)
                  【解决方案9】:

                  试试:is选择器

                  $("#deliveryNext").is(":disabled")
                  

                  【讨论】:

                  • 改用“.prop('disabled')”。
                  • @tponthieux 你能详细说明一下吗?
                  【解决方案10】:

                  $('#StartButton:disabled') ..

                  然后检查它是否未定义。

                  【讨论】:

                    【解决方案11】:

                    改用 .prop:

                    $('#deliveryNext').prop('disabled')
                    

                    【讨论】:

                    • 这给了我相同的结果,如果我在 firebug 中写这个:console.log($('#deliveryNext').prop('disabled')) 我得到“未定义”
                    • 在 FireFox 中为我工作。
                    • 如果您使用引导程序,您可能还需要标签 A 的 hasClass("disabled")。
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-01-09
                    • 2020-01-02
                    • 2022-01-09
                    • 2019-10-28
                    • 1970-01-01
                    • 2014-04-23
                    • 1970-01-01
                    相关资源
                    最近更新 更多