将提交处理程序绑定到jQuery 1.7.1中的表单会返回错误

时间:2012-02-28 00:15:29

标签: javascript jquery

请使用以下代码:

$("#docUploadForm").on("submit", function(event) {
    event.preventDefault();
});

到目前为止足够简单,对吗?绑定是在init()上触发的$(document).ready()方法内触发的。

Chrome在绑定提交的行上抱怨: Uncaught TypeError: Object #<HTMLInputElement> has no method 'toLowerCase'

抛出的错误来自jQuery核心。如果有人好奇,相关的电话是在jquery-1.7.1.js的第1853行:var match = jQuery.noData[ elem.nodeName.toLowerCase() ];

那么,我需要做些什么才能解决这个问题?

Firefox 9中的Firebug抱怨同样的问题。所以这不是浏览器实现问题。

1 个答案:

答案 0 :(得分:6)

发现了这个问题。

这适用于使用Java Content Repository的内部Web应用程序。在JCR中,对象称为节点,因此我们使用节点名称引用对象。

在我的表单中,我有一个隐藏的输入,其id为nodeName,这显然会导致与jQuery冲突。在jQuery中出错的行是调用elem.nodeName,它返回隐藏的输入而不是它期望的DOM节点的名称。

所以吸取教训:不要给表单元素一个id为“nodeName”,jQuery不喜欢它。

请参阅this Fiddle了解演示。