01-HTML5 form 按 Enter 的執行送出表單
在 HTML5 的 <form action=""></form> 的元素裡面,如果有 submit 按鈕時,裡面其他表單元素按 enter 時,此時會觸發 submit 按鈕的 onclick 事件、form 的 onsubmit 事件,送出表單。註:若是用 …form.submit() 方法送出表單,則不會觸發 form 的 onsubmit 事件
See the Pen HTML5 預設 submit 行為 by Jimmy_Wu (@Jimmy_Wu) on CodePen.
01-JavaScript 與 jQuery 解法
JavaScript 常見的事件句柄(Event Handlers)
屬性名 | 描述(對應事件發生在何時…) | 屬性名 | 描述(對應事件發生在何時…) |
---|---|---|---|
onabort | 圖像的加載被中斷 | onblur | 元素失去焦點 |
onchange | 域的內容被改變 | onclick | 當用戶點擊某個對象時調用的事件名柄 |
ondblclick | 當用戶雙擊某個對象時調用的事件句柄 | onerror | 在加載文檔或圖像時發生錯誤 |
onfocus | 元素獲得焦點 | onkeydown | 某個鍵盤按鍵被按下 |
onkeypress | 某個鍵盤按鍵被按下並鬆開 | onkeyup | 某個鍵盤按鍵被鬆開 |
onload | 一張頁面或一幅圖像完成加載 | onmousemove | 鼠標按鈕被按下 |
onmousemove | 鼠標被移動 | onmouseout | 鼠標從某個元素移開 |
onmouseover | 鼠標移動到某元素之上 | onmouseup | 鼠標銨鍵被鬆開 |
onreset | 重置按鈕被點擊 | onresize | 窗口或框架被重新調整大小 |
onselect | 文本被選中 | onsubmit | 確認按鈕被點擊 |
onunload | 用戶退出頁面 |
1 2 3 4 5 6 7 8 | $('.input').keypress(function(e) { code = e.keyCode ? e.keyCode : e.which; // in case of browser compatibility if(code == 13) { e.preventDefault(); // do something /* also can use return false; instead. */ } }); |
02-HTML 的解法
1 2 3 4 5 6 | <form action="www.baidu.com" method="post" onkeydown="if(event.keyCode==13){return false;}"> <input type="text" value="" /> <input type="text" value="" /> <button>提交</button> <!-- 或在對應input上添加,同時建議取消自動填充,因為mac下會有問題<input type="text" value="" autocomplete="off" onkeydown="if(event.keyCode==13){return false;}" /> --> </form> |
1 2 3 4 5 6 7 8 9 10 11 12 | <!-- 解決方法1:藏一個隱藏的text input (但若form裡面還有個submit按鈕,此方法就不管用了) --> <form method="post" action="test.php"> AA:<input type="text" name="aa"> <input type="text" style="display: none"> <input type="radio" name="cc">CC </form> <!-- 解決方法2:在 text input enter 時 return false --> <form method="post" action="test.php"> AA:<input type="text" name="aa" onkeypress="if (event.keyCode == 13) {return false;}"> <input type="radio" name="cc">CC </form> |