2013-06-02 116 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