2013-01-09 46 views
2

我試圖將我的香草JavaScript技巧稍微磨亮一點。我正在開發一個表單驗證器,只是爲了好玩。這裏是我的代碼至今:.submit()和JavaScript中的表單驗證

var getParent = document.getElementById("myForm"); 

document.getElementById("submit").onclick = function(e) { 

e.preventDefault(); 

var cache = !cache ? "Nothing has been selected" : cache; 

for(i = 0; i < getParent.elements.method.length; i++) { 

    if(getParent.elements.method[i].checked) { 
     cache = getParent.elements.method[i].value; 
    } 

} 

getParent.submit(); 

} 

正如你所看到的,這只是測試了一些單選按鈕,看看他們進行檢查與否。我正在嘗試使用底部的.submit()函數來提交表單,但出現錯誤。爲什麼此代碼不提交我的表格.submit() ??

+2

你有什麼錯誤? – ATOzTOA

+0

Uncaught TypeError:屬性'submit'對象#不是函數 – Sethen

+2

使用另一個ID而不是「submit」按鈕 –

回答

4

您不能有名爲submit的按鈕並使用submit()

該按鈕將覆蓋該方法。所以,當你撥打getParent.submit()時,它實際上指向按鈕,而不是實際的提交功能。

+1

一些技術細節:表單允許您按名稱訪問表單的元素,例如'loginForm.username'返回'username'輸入字段。所以,儘管默認情況下表單有一個'submit'方法,但如果存在一個名爲'submit'的字段,它將覆蓋'submit'方法。這就是爲什麼'submit'是「不是函數」的原因:在這種情況下,它是一個按鈕。 – Matchu

+0

啊,謝謝你,先生。我忘了我們可以很容易地覆蓋方法。 – Sethen

+1

我一直髮現這個「有用」的方式來訪問表單字段作爲表單元素的屬性是非常侵入性的。我明白了,但這會導致這樣的奇怪的錯誤。 –