2010-12-07 154 views
3

我想通過調用元素的blur方法強制一個onblur處理程序運行。但之後,我認爲這是行不通的,因爲我記得調用FormElement提交不會導致其onsubmit方法被運行。在JavaScript中,爲什麼blur方法觸發blur事件,但submit方法不會觸發提交事件?

經過一番實驗後,我發現調用blur會導致元素的onblur處理函數被調用。這看起來很不一致,並不是讓我感到意外(畢竟這是JS)。不過,如果有充分的理由,我想知道。在模糊但未提交的情況下是否有充分的理由調用處理程序?

回答

2

我同意這看起來不一致。我的看法是,OnSubmit行爲有很多遺留行李,因爲它的大部分功能都是爲了讓人們可以在表單元素中進行編碼而設計的。爲此,onsubmit被用於驗證輸入而不破解打開源代碼編輯器或JavaScript文件。我的猜測是,當他們編碼的這種行爲(很久以前),這似乎明智的,因爲一旦你在JavaScript程序員可以很容易地驗證輸入自己,使自動檢查是沒有必要的。看起來像是對我的疏忽。

這個關於quirksmode的網站特別警告了這個,很明顯很多人都被這個困惑了。

http://www.quirksmode.org/js/forms.html

相關問題