关于表单回车自动提交的讨论
關(guān)于表單回車自動提交的討論
?
?????在做超限查詢時,為了用戶操作的易用性,在用戶輸入車牌號碼后,直接回車就進(jìn)行查詢的操作,而不是等用戶用鼠標(biāo)點(diǎn)擊“查詢”了才發(fā)送請求去查詢。可能我們都以為很簡單,就是“查詢”的時候(回車)去做發(fā)個查詢的請求就行了,確定是如此。可是,如果只有一個用戶輸入車牌號碼的表單text時,就會有些問題。
?????我們的查詢操作是發(fā)送一個ajax請求,而不是把表單提交上去,但是奇怪的是,只要一按回車鍵,表單就自動提交了,并沒有去執(zhí)行我希望執(zhí)行的發(fā)送ajax請求。
查了資料,才知道:當(dāng)在一個form中只有一個text元素,這時候如果按回車相當(dāng)于對form進(jìn)行了一個submit操作,所以用戶在輸入完按回車就代表了submit。如果一個form中不是只有一個text元素,而還有其它的text元素的話,就不會自動提交了。
?????我解決并測試的過程,在程序中用戶輸入的車牌號的text的如下:
?????<input type="text" name="LICENSE_CODE" size="10" οnkeydοwn="if(event.keyCode==13){overLimitRecMgr.querySpecial();}"/>
?????這時候一直沒有執(zhí)行overLimitRecMgr.querySpecial(),而是執(zhí)行form的submit操作了,可以用setTimeout來測試,如下:
?????if(event.keyCode==13){window.setTimeout('overLimitRecMgr.querySpecial()',500);return false;}
?????這時候在執(zhí)行完表單的自動提交后,延遲了0.5秒后再執(zhí)行了ajax的請求:overLimitRecMgr.querySpecial()。
?????其實最好的解決辦法是:
?????先讓form不自動提交,然后在keydown==13時做自己想做的事,如發(fā)送ajax的請求等。如下處理:
?????<form action="/jsp/over_mgr/over_limit_record/queryAllList.do" method="post" onSubmit="return false;">
?????通過在from中設(shè)置onSubmit="return false;"就可以屏避了表單自動提交的問題。
----------------------------------------the end---------------------------------------
轉(zhuǎn)載于:https://www.cnblogs.com/ysenhan/archive/2009/01/08/1371702.html
總結(jié)
以上是生活随笔為你收集整理的关于表单回车自动提交的讨论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 资源引用地址
- 下一篇: Javascript称球
