form表單提交是web項目中經常遇到的,但是如果form中只有一個input為text類型的輸入框時,
需要格外注意,因為這時候只要你按下回車鍵,form表單就會自動提交,這是form表單的一個特性。
如何有效的防止呢?
小編認為最簡潔有效的方法就是增加一個隱藏域。比如下面的代碼就可以解決問題:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="../index/login.do" method="post" > <label for="files">用戶名:</label> <input type="text" name="userName"> <input type="text" style="display: none;"> <button type="submit">提交</button> </form> </body> </body> </html>
但是這也有個bug就是如果input框獲取了焦點,但是未輸入任何字符的情況下,點擊回車鍵依舊可以提交表單。因此接下來的這種方法則規避了這一個BUG
第二種方案,就是在input為text的文本框中,增加onkeydown事件,並且當按鍵是回車鍵也就是keyCode=13時,不做處理,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="../index/login.do" method="post"> <label for="files">用戶名:</label> <input type="text" name="userName" onkeydown="if(event.keyCode==13){return false}"> <!-- <input type="text" style="display: none;"> --> <button type="submit">提交</button> </form> </body> </body> </html>
以上是小編在實際過程中測試的代碼,如有問題,歡迎留言交流!