【问题标题】:jQuery to disable button not workjQuery禁用按钮不起作用
【发布时间】:2013-01-30 17:28:14
【问题描述】:

我曾经将事件绑定到我的按钮,例如:

$("input[name=add]").live("click",function(){...});

但我有另一个功能可以让它们“启用”和“禁用”,例如:

RefreshBox() {

    $("input[name=add]").each(function(){
        if(...)
            $(this).attr("disabled","disabled");
        else
            $(this).attr("disabled","");
    })

}

但事实上它并没有像我预期的那样工作。按钮仍然可以点击,事件仍然可以顺利进行。

PS: jQuery 1.4.1 浏览器:IE8,禁用按钮后仍然可以工作。 浏览器:Chrome,禁用按钮成功。

【问题讨论】:

  • 您使用的是哪个版本的 jQuery?
  • 我无法重现此问题。有关示例代码,请参阅jsfiddle.net/liho1eye/yfA8d。我怀疑你要么没有使用正确的选择器,要么没有调用你的禁用代码。
  • @BookOfZeu 这只是一个显示我状态的模拟谓词。按钮可以禁用和启用,但禁用时仍然可以触发事件。

标签: jquery html


【解决方案1】:

您需要使用prop 函数而不是attr

$(this).prop("disabled", true);

$(this).prop("disabled", false);

编辑

OP 使用 jQuery pre 1.6.1,这就是为什么 attr for disabled 不能正常工作(对于较旧的 IE)。虽然propdisabled 的首选,但发布1.6.1 attr 应该(并且确实)也可以工作。

【讨论】:

  • disabled不也是一个属性吗?例如。 disabled="disabled"
  • 如果我没看错,他的问题是他不能禁用按钮,不能重新启用。
  • @PeeHaa - 我不是这里的专家,但 jQuery 文档建议使用 prop 而不是 attr 来禁用。 OP 的问题在于 IE8,这让我认为这可能是 prop 应该处理的边缘情况之一
  • @liho1eye - 这个 SO Q 似乎暗示了 stackoverflow.com/questions/7677886/…
  • 正如这个链接所暗示的,如果 OP 使用 jQuery stackoverflow.com/questions/6169826/…,它可以有所作为
【解决方案2】:

尝试$("input[type=submit]").removeAttr("disabled"); 启用按钮。

【讨论】:

  • 不是 OP 描述的问题。
  • 我的意思是在我使用代码 $.attr("disabled","disabled"); 禁用按钮后仍然可以单击该按钮;
【解决方案3】:

您可以使用以下方法将 'disabled' 属性设置为 false:

$("input[name='add']").attr("disabled","disabled");

【讨论】:

    猜你喜欢
    • 2017-08-28
    • 1970-01-01
    • 2019-03-08
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多