一個列表界面只有一個輸入框查詢條件,當首次進入在輸入框中輸入漢字後,按回車鍵發現輸入框中漢字變成亂碼!本覺得一個很簡單不過的問題,結果卻花了很久才找到緣由(聽說是瀏覽器問題),按回車後執行了兩次查詢。javascript
一、未修改前代碼:java
<form id="ff" name="ff" method="post">瀏覽器
<input type="text" id="userName" name="userName" size="12" maxlength='30' value="${(data.userName)!''}" onKeypress= "javascript:if(event.keyCode==13) do_postAuditList_search();"/>
網絡
</form>post
二、修改後代碼:spa
<form id="ff" name="ff" method="post">code
<input type="text" id="userName" name="userName" size="12" maxlength='30' value="${(data.userName)!''}" onKeypress= "javascript:if(event.keyCode==13) do_postAuditList_search();"/>
orm
<!--解決form表單在只有一個input輸入框時回車會自動提交表單-->
<input style='display:none' />事件
</form>ip
即:添加一個<input type='text' style='display:none'/>不顯示輸入框,而後回車以後也不會提交。
補允:
******後經網絡搜索,發現一大牛寫的,更全面,在此引用******
出現自動提交的狀況,有兩種可能: 一是編寫了javascript代碼,當用戶點按Enter鍵時,經過js事件偵聽機制觸發表單的提交。 二是利用了瀏覽器的默認行爲(至少發現ie是這樣的)。瀏覽器在解析網頁的時候,有許多默認的行爲,例如若是一個頁面上有表單和一個提交按鈕,那麼打開頁面時,焦點會自動落在這個提交按鈕上面。一樣若是一個表單中只有一個單行文本輸入域(text),那麼在這個輸入域中按Enter鍵時,瀏覽器會自動提交該表單。 咱們對於第一種狀況通常都知道並且很容易理解,可是對於第二種瀏覽器的默認行爲,可能知道這一點的人就比較少了,下面我具體看一下瀏覽器(至少ie如此)在表單提交上的默認行爲。 若是表單中含有一個單行文本輸入域,那麼不管含有多少其餘類型的表單組件,那麼在該輸入域中點擊Enter時,表單會自動提交。例以下面的代碼: <form action="" method="post" <input type="text" name="sdfsdf"/ <textarea</textarea <input type="checkbox"sdfsdf <input type="hidden"name="aa"/</form 若是表單中含有兩個或多個單行文本輸入域,那麼不管是否含有其餘類型的表單組件,按Enter鍵時不會自動提交,例如: <form action="" method="post" <input type="text" name="sdfsdf"/ <input type="text" name="sddf"/</form 辦法很簡單,咱們上面舉的例子中已經有了,只要再添加一個文本輸入框就能夠了,可能你會說,爲了避免自動提交就要增長一個沒有用的輸入框,並且中含有兩個輸入框最終用戶會接受嗎?其實能夠解決,你能夠將那個新添加的輸入框經過style隱藏便可,例如: <form action="" method="post" <input type="text" name="notautosubmit" style="display:none"/ <input type="text" name="username"/</form 還有一個方法能夠綁定button按鈕 enter觸發事件: document.onkeypress = function(){ if(event.keyCode == 13) {search();returnfalse;}}其中search方法是onclick事件:<form name="searchfrom"