form表單按enter鍵自動提交的問題
1:form
表單按enter
鍵自動提交的情況
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
</head>
<body>
<form method="post" action="http:www.baidu.com">
<input>
<textarea name="text" cols="20" rows="5" />
</form>
</body>
</html>
在此文字框中按enter
鍵,頁面會自動跳轉到百度的搜尋頁面。
2:解決方案
1)去掉form表單。然後在文字框中按enter鍵就不會出現自動跳轉的情況了。(不建議使用)
2)再新增一個隱藏的文字框。出現問題的原因是form表單中有且只有一個文字框。故新增一個隱藏的文字框也可解決問題。
<input style="display:none"/>
3)在表單上新增屬性"return false";
也可以解決問題。
form
表單中只有一個input
時,按Enter鍵後表單自動提交(form表單的一個小坑)
最近在給公司改專案時發現一個問題,按鈕繫結回車事件後按回車表單執行js方法後表單自動提交重新整理,先執行了js的方法後自動提交表單,使它相當於沒有執行js方法,查閱資料得知在一個form
表單中,若只有一個input
,按Enter鍵表單會自動提交,但是當表單中存在多個input
時,按Enter鍵不會執行任何操作,這是form
表單的一個特性。
解決這個問題有四種方法,如下:
- 第一種方法,把表單去掉,這是最管用,但也是最傻的方法,直接新增
onclick
事件,不用表單提交,這種方法就不贅述了。 - 第二種方法,很多人估計都想到過,就是既然一個
input
會自動提交,多個input
就沒問題,那麼我給它多加一個input
不就行了,有些人試過發現不行,那是為什麼呢?
因為他是這麼寫的<input type="hidden">
,這樣當然不行,一個隱藏域,type
並不是text
,所以不行。
但是,<input type="text" style="display:none;">
,使用這種方法就可以了,因為它是用樣式隱藏輸入框的,實質上還是一個type為text的input
。 - 第三種方法,這種方法很好用,直接對
form
進行操作,個人推薦這種方式。直接在form
上加上"return false;"
這段話,它會阻止表單的Enter鍵進行提交。
例:<form action="" method="post" "return false;">
- 第四種方法,這種方法是直接對
input
進行操作,強行將Enter鍵操作去掉,這種方式也不錯,在input
上加一個onkeydown
事件,
"if(event.keyCode==13){return false;}"
,阻止Enter鍵的操作。
例:<input type="text" "if(event.keyCode==13){return false;}">
以上四種方法都可以防止表單中只有一個input
時,按Enter鍵會自動提交表單的問題。
【完全解決】取消回車自動提交表單
情景一:
form
中沒有需要輸入Enter
鍵的控制元件,如沒有textarea
方法一: 在 form
標籤上新增 'onkeypress'
<form ... onkeypress="return event.keyCode != 13;">
方法二: 通過 JQuery
用程式碼統一處理
$(document).on("keypress", "form", function(event) {
return event.keyCode != 13;
});
情況二:
form
中有 textarea
,需要輸入Enter
鍵,且此Enter
鍵不造成Form
的自動提交
方法一: 笨辦法 - 適用於控制元件不多的場景,每一個控制元件上單獨新增遮蔽Enter
鍵的輸入,如:
<input ... onkeypress="return event.keyCode != 13;">
<select ... onkeypress="return event.keyCode != 13;">
...
方法二: 用程式碼的方式來批量遮蔽,如下:
$(document).on("keypress", ":input:not(textarea)", function(event) {
return event.keyCode != 13;
});
方法三: 方法二的改良版,增加了對個別控制元件需要單獨使用Enter
鍵做其他操作的個別需求,可以使用如下方法:
$(document).on("keypress", ":input:not(textarea)", function(event) {
if (event.keyCode == 13) {
event.preventDefault();
}
});
方法四:針對性遮蔽,比如僅開啟 textarea
和 submit
按鈕的Enter
, 如下:
$(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
// ...
});
相關文章
- form表單只單個input框按Enter鍵頁面會自動重新整理ORM
- 觸發form表單自動提交的方式有哪些?ORM
- form表單提交方式ORM
- 防止點選enter回車提交表單
- form表單使用 btn submit-btn ajax-post方式提交問題。ORMMIT
- form表單提交注意事項ORM
- 【3分鐘學會】一招禁用表單中input輸入框Enter鍵自動觸發提交事件!事件
- vxe-table 實現按Enter鍵自動新增一行
- [BUG反饋]form表達提交查詢問題ORM
- Form 表單提交知識的總結(全)ORM
- textarea 響應按下Enter鍵
- iOS 使用form表單形式提交post請求iOSORM
- Java實現動態的匯出Excel表功能--用form表單提交JavaExcelORM
- jquery如何判斷是否按下了Enter鍵jQuery
- 如何解決表單提交的中文亂碼問題
- JS判斷鍵盤是否按的Enter鍵並觸發指定按鈕點選操作JS
- iview 表單提交資料的時候驗證問題View
- formly-form 動態表單ORM
- Layui環境下form表單提交;jquery.form.js;lay-verify,lay-filter;UIORMjQueryJSFilter
- django通過form和ajax提交表單資料和圖片DjangoORM
- 表單form方式ORM
- 清空form表單ORM
- form表單的簡單介紹ORM
- SAP UI5 Form 表單 Column Layout 下的 Column 個數分配問題UIORM
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式
- 頁面提交引數多而非form表單提交時應該怎麼處理引數進行提交ORM
- 提交表單
- Vue資料驅動表單渲染,輕鬆搞定form表單VueORM
- 點選Enter鍵表切換焦點效果
- 記錄PHP post提交表單匯入mysql中文亂碼的問題PHPMySql
- form表單的元素及方法ORM
- tpextbuilder- Form表單UIORM
- input捕捉Enter鍵
- vue中怎麼動態生成form表單VueORM
- js控制form提交JSORM
- 啟動按ctrl鍵 遮蔽自動隱藏功能
- mac git命令按tab鍵自動補全MacGit
- 移動端頁面鍵盤出現“搜尋”按鍵且實現提交功能