2012-04-19 92 views
0

在我以前的版本的应用程序,这些代码工作得很好:遗漏的类型错误对象有没有方法“禁用”

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

有了新的环境(Rails的3.3和JQuery的新版本),这不工作了。

我得到的错误是:

遗漏的类型错误对象[对象的对象]还没有方法“禁用”。

为什么我得到这个错误,我该如何解决呢?

回答

3
[].forEach.call(form.elements, function (el) { el.disabled = true }) 

或jQuery的也许......

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

+1是唯一明智的答案......但是你知道他也需要一个jQuery解决方案。 – rlemon 2012-04-19 14:52:49

+0

其他人已经提供了这个,我试图成为原创! – 2012-04-19 14:53:39

+0

是的,但我总是看到最蠢的jQuery答案...就像如果你要使用库,你应该至少正确使用它。 – rlemon 2012-04-19 14:54:51

2

不要使用disable()prop("disabled", true)来代替。

据我所知,从未有jQuery中

disable()方法
+1

第二个参数(即价值),或许应该只是是'true',因为DOM属性是布尔值而不是字符串。 (字符串形式是适当的*属性*,而不是* *财产,换句话说。)然而,字符串将工作,因为,当强制为布尔值,它是'真'。 – Pointy 2012-04-19 14:39:38

+0

不@Xander你是不正确的。看看DOM规范:**属性**是布尔值,而不是字符串。在HTML标记中,将**属性**设置为“禁用”,但DOM元素的**属性**是布尔值。 (Ooops Xander删除了他的评论:-) – Pointy 2012-04-19 14:41:09

+0

@pointy是的,你是对的。它不同于使用'.attr' – xandercoded 2012-04-19 14:44:49

相关问题