【问题标题】:Uncaught TypeError Object has not method 'disable'未捕获的 TypeError 对象没有方法“禁用”
【发布时间】:2012-04-19 14:36:50
【问题描述】:

在我以前版本的应用程序中,这段代码运行良好:

form.find('input').disable();

对于新环境(Rails 3.3 和新版本的 JQuery),这不再起作用了。

我得到的错误是:

Uncaught TypeError Object[object Object] has not method 'disable'.

为什么会出现此错误以及如何解决?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:
    [].forEach.call( form.elements, function ( el ) { el.disabled = true } )
    

    或者在 jQuery 中可能...

    $(document.forms['form_name'].elements).each(function() {
       this.disabled = true;
    });
    

    【讨论】:

    • +1 是唯一明智的答案......但你知道他也想要一个 jQuery 解决方案。
    • 是的,但我总是看到最愚蠢的 jQuery 答案......就像如果你要使用这个库,你至少应该正确使用它。
    【解决方案2】:

    不要使用disable(),而是使用prop("disabled", true)

    据我所知,jQuery 中从来没有 disable() 方法

    【讨论】:

    • 第二个参数(即值)应该只是true,因为 DOM 属性是布尔值而不是字符串。 (换句话说,字符串形式适用于 attribute,但不适用于 property。)该字符串将起作用,因为当强制转换为布尔值时,它是 true .
    • 不,@Xander 你错了。查看 DOM 规范: property 是布尔值,而不是字符串。在 HTML 标记中,您将 attribute 设置为“禁用”,但 DOM 元素的 property 是一个布尔值。 (Ooops Xander 删除了他的评论 :-)
    • @pointy 是的,你是对的。它不同于使用.attr
    • @Xander 对。然而,这真的无关紧要,因为非空字符串“disabled”就像truetrue 一样:-) Stackoverflow 是我们不必要的迂腐的地方!
    • 为什么我需要jQuery来设置元素属性???? . 突然写得太难了? (只是说明一点)form.disabled = true; 免责声明:我认为您不能像这样禁用整个表单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2016-07-23
    • 2012-07-23
    • 2013-08-19
    • 1970-01-01
    • 2018-09-01
    相关资源
    最近更新 更多