2013-06-02 114 views
1

我想使用JavaScript .submit()来自动提交表单,但是其中一个字段有一个名为submit的名称,所以它返回。Javascript form.submit冲突的名称

TypeError: document.forms.go.submit is not a function 
[Break On This Error] 

document.forms["go"].submit(); 

有什么我可以从.submit

+0

我会建议重命名你的'submit'字段,但我想你已经想到了,对吗? –

+0

我会把它叫做笨蛋,但OP,你可以重命名输入字段吗?无论如何,我认为你不会有其他选择。 –

回答

1

最好的解决办法是使用不引起冲突的名称使用分开。

但是,您可以通过原型调用submit。例如,

HTMLFormElement.prototype.submit.call(// invoke form submit on 
    document.forms["go"] // your form 
); 

同样,你可以尝试从另一个<form>

document.createElement('form').submit.call(// invoke submit from another form on 
    document.forms["go"] // your form 
); 

这些是不是真正的解决方案的更多黑客“借”了,所以你应该考虑选择一个不同的名称。

+0

浏览器不需要实现任何类型的继承,更不用说原型继承,所以我不会建议尝试使用这种方法。 – RobG

+0

@RobG true,但这并不意味着它永远不可用。添加了第二个“黑客”,做了类似的事情。我更强调,消除名称冲突也是更好的选择,以防万一以前不够强大。 –

+0

这并不是更好,宿主对象不必实现调用,但我很惊讶,IE 8似乎。 :-) – RobG