jQuery Mobile如何检查按钮是否已禁用?

67

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

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

我可以通过以下方式启用它

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

但是我该如何检查按钮是否被禁用或启用?

这个命令返回"undefined":

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

有些想法?

编辑:我发现$("#deliveryNext").button('disable')似乎只改变了按钮的样式,点击后仍然可以正常工作,所以我需要想办法禁用按钮... 我尝试使用.attr('disabled', 'disabled'),但是当我测试.attr('disabled')时,返回的是未定义...

编辑2:关于我的“真实”问题,更多信息请参见如何在jQuery Mobile中禁用链接按钮?

11个回答

134

尝试使用:is选择器

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

3
请使用 ".prop('disabled')" 来替代。 - tponthieux
1
@tponthieux 你能详细说明一下吗? - BartoszKP

30

使用 .prop 替代:

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

如果我在Firebug中编写以下代码: console.log($('#deliveryNext').prop('disabled')) 我会得到“undefined”的结果。 - RickardP
在 FireFox 中对我有效。 - tponthieux
3
如果您在使用Bootstrap,那么您可能也需要为A标签使用hasClass("disabled")。 - Imskull

15

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

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

但只有一种技巧适用于我.is('[disabled]')用方括号)。

因此,要确定按钮是否被禁用,请尝试以下方法:

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

9

尝试

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

以下代码对我有效:
```html

以下代码对我有效:

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

返回给我 false,但是按钮已经被禁用了 $('#deliveryNext').button('disable')。 - RickardP
当您禁用元素时,它是否具有禁用标记?(您可以通过Firebug进行检查) - lancscoder

9

我曾经遇到过同样的问题,我找到了下面的方法解决了:

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

如果返回的是undefined,你可以使用if条件语句。

当你对undefined进行评估时,它会返回false


6

尝试

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

5

点击此处查看..

这个链接是一个关于it技术的网站,其中包含了一些代码。
$(function(){

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

2
为了查看已经设置在 jQuery UI 按钮上的选项,请使用以下代码:
$("#deliveryNext").button('option')

为了检查是否已禁用,您可以使用以下命令:

检查是否已禁用:

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

很不幸,如果在上述调用之前按钮没有被明确启用或禁用,那么它将只返回按钮对象本身,因此您需要先检查选项对象是否包含“disabled”属性。

因此,要确定按钮是否已禁用,可以按照以下方式执行:

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

0

$('#StartButton:disabled') ..

然后检查它是否未定义。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接