我們有時候希望回車鍵敲在文本框(input element)里來提交表單(form),但有時候又不希望如此。比如搜索行為,希望輸入完關鍵詞之后直接按回車鍵立即提交表單,而有些復雜表單,可能要避免回車鍵誤操作在未完成表單填寫的時候就觸發了表單提交。
要控制這些行為,不需要借助JS,瀏覽器已經幫我們做了這些處理,這里總結幾條規則:
- 如果表單里有一個type=”submit”的按鈕,回車鍵生效。
- 如果表單里只有一個type=”text”的input,不管按鈕是什么type,回車鍵生效。
- 如果按鈕不是用input,而是用button,並且沒有加type,IE下默認為type=button,FX默認為type=submit。
- 其他表單元素如textarea、select不影響,radio checkbox不影響觸發規則,但本身在FX下會響應回車鍵,在IE下不響應。
- type=”image”的input,效果等同於type=”submit”,不知道為什么會設計這樣一種type,不推薦使用,應該用CSS添加背景圖合適些。
實際應用的時候,要讓表單響應回車鍵很容易,保證表單里有個type=”submit”的按鈕就行。而當只有一個文本框又不希望響應回車鍵怎么辦呢?我的方法有點別扭,就是再寫一個無意義的文本框,隱藏起來。根據第3條規則,我們在用button的時候,盡量顯式聲明type以使瀏覽器表現一致。
以上轉自 http://blog.csdn.net/dac55300424/article/details/39158759
針對移動端,ios可以插入一個無意義的文本框隱藏,監聽回車鍵做其他處理。此時form通過監聽處理。
Android則不建議插入,插入后回車鍵失效,同樣監聽回車鍵並禁止默認事件。此時form通過監聽處理。
移動端點擊回車的時候,ios疑似先提交form再觸發監聽。有待進一步考證。
