問題描述
什麼時候調用對方?是否有一種情況是 onChange 會被調用,但 onBlur 不會被調用?
最佳解決方案
onBlur 事件在您已經從對象移開而不一定更改其值的情況下被觸發。
onChange 事件只有在您更改了該字段的值並失去焦點時才會調用。
你可能想看看 quirksmode’s intro to events 。當您與瀏覽器進行交互時,可以獲取有關瀏覽器中發生的情況的詳細信息。他的書也很好。
次佳解決方案
當一個字段失去焦點時,onblur 會觸發,而當該字段的值改變時,onchange 觸發。但是,這些事件並不總是以相同的順序發生。
在 Firefox 中,選擇一個已更改的字段將會在 onchange 上發生變化,並且通常會在 IE 中執行相同操作。但是,如果按確定鍵而不是選項卡,那麼在 Firefox 中將會啓動 onblur 然後 onchange,而 IE 將通常以原始順序啓動。但是,我看到 IE 也會首先發現模糊的情況,所以要小心。你不能假設 onblur 或 onchange 將發生在另一個之前。
第三種解決方案
舉一個具體的例子。如果你有這樣的選擇:
<select onchange="" onblur="">
<option>....
</select>
當您離開時,onblur()被調用。當您從選擇中選擇不同的選項時,將調用 onchange(),即更改當前選擇的選項。
第四種方案
在 Firefox 中,只有在選項卡或其他單擊輸入字段之外,onchange 才會觸發。 Onblur 也是如此。不同的是,onblur 將會觸發,無論你是否改變了現場的任何內容。可能的是,ENTER 會觸發其中的一個或兩個,但是您不知道如果禁用表單中的 ENTER 以防止意外提交。
第五種方案
當您的焦點不再在該領域時,onBlur 就是這樣。
The onblur property returns the onBlur event handler code, if any, that exists on the current element.
onChange 是當字段的值更改時。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。