當form表單文本框控件在收到回車事件時,默認會觸發表單內第一個可提交按鈕的事件,但業務中可能要求有其它控件進行提交,而不是這個默認的javascript
這時須要腳本控件事件冒泡傳遞取消回事事件.html
1 $(document).keydown(keyListener); 2 function keyListener(e) 3 { 4 e = e ? e : event; 5 try 6 { 7 if (e.keyCode == 13) 8 { 9 if (e.preventDefault) 10 { 11 e.preventDefault(); 12 e.stopPropagation(); 13 } 14 else 15 { 16 window.event.returnValue = false; 17 } 18 } 19 } 20 catch (ex) 21 { 22 } 23 }
document.onkeydown = keyListener; function keyListener(e) { e = e ? e : event; if (e.keyCode == 13) { if (document.activeElement.id == '<%=this.txtBarCode.ClientID%>') { event.preventDefault(); e.stopPropagation(); $("#<%=this.btnQuery.ClientID%>").click(); } else if (document.activeElement.id == '<%=this.txtGoodID.ClientID%>' || document.activeElement.id == '<%=this.txtSize.ClientID%>') { e.preventDefault(); e.stopPropagation(); var huohao = $('#<%=this.txtGoodID.ClientID%>').val(); var chima = $('#<%=this.txtSize.ClientID%>').val(); if (huohao != null && huohao != '' && chima != null && chima != '') { <%=this.ClientScript.GetPostBackEventReference(this.btnQuery, "")%>; } } } }
在WEB頁面上,一般SUBMIT類型的按鈕會被默認指派爲所在FORM表單的提交按鈕java
在作ASP.net WEB應用的時候,經常遇到會在同一個頁面裏添加多個按鈕,而每一個按鈕確定都會觸發頁面回送事件。瀏覽器
在ASP.NET中,只能指定一個帶有runat="server"的FORM表單,所以,這個表單會指派哪一個按鈕爲默認提交按鈕呢?服務器
不作任何處理的狀況下是很難控制的,例如在同一個頁面裏作了N個搜索框,設計上理想的思路是在某一輸入框輸入關鍵字後,用戶按ENTER鍵,執行當前輸入的輸入框對應的提交按鈕,可是,實際上每每事與願違。不管怎麼提交,老是會只執行某一個按鈕事件。post
若是指定Form的默認按鈕,能夠指定Form的DefaultButton屬性值爲一個按鈕的ID。但這樣下來,回車時就永遠執行這個按鈕,其它按鈕沒法被回車觸發。ui
網上不少方法都是使用JAVASCRIPT來進行判斷,在輸入框中加入KEYPRESS之類的事件,而後檢查eventCode,若是是回車鍵,那麼就指定執行某一個按鈕。this
這個方法不是不行,可是,並很差維護,並且在處理複雜的邏輯時,每每很差控制。url
其實,ASP.NET給出了很好的解決方案,只是一般不被人注意。spa
首先,屏蔽瀏覽器提交模式,也就是說,FORM再也不默認指定一個ENTER提交的按鈕
方法是將控件button的UseSubmitBehavior設置爲false(LinkButton和ImageButton沒有這個屬性,沒必要設置),這樣這個按鈕就不會接受回車提交,這樣就不會出現用戶焦點在頁面某處聚焦時按回車提交的狀況。
爲何會這樣呢?查看頁面源文件咱們會發現原本ASP.NET的BUTTON服務器控件在發送到客戶端後type="submit",但這時UseSubmitBehavior設置爲false後,type="button" ,並且多了一個onclick事件,內容是"javascript:__doPostBack('Button1','')" id="Button1",這樣,就說明,這個按鈕再也不是FORM的提交按鈕了,而只是一個普通按鈕,要提交頁面必須執行click事件,因此怎麼點回車,也不會執行這個按鈕的提交事件。
剛纔只是第一步,阻止了默認的提交。可是,咱們要的效果是回車能夠提交啊。只是設置這一個屬性固然沒法達到咱們想要的效果。
接下來,咱們要了解Panel控件。
其實Panel控件是很是有用的,他是一個容器,在ASP.NET的Panel控件中有一個屬性 DefaultButton, 這個屬性在ASP.NET的Form控件中也有(前有敘述)。
Panel是一個特殊的控件 MSDN上的說明是:使用Panel 控件來組織 Form、另外一 Panel 或模板中的內容和控件。
也就是說Panel是ASP.NET對Form的一個補充,能夠給表單分區域的控件,這也是爲何ASP.NET AJAX容器使用該控件的緣由。
咱們都知道,ASPX只能有一個runat=「server」的FORM表單,那麼要進行細緻,具體的FORM操做怎麼辦,那麼就得靠Panel控件
這裏,咱們就會用到Panel的這個功能
將一組輸入框和按鈕放在一個Panel中,指定該Panel的DefaultButton屬性爲按鈕ID,這樣,當用戶焦點處於這個Panel內的某一控件時,點擊回車就會執行這個Panel的DefaultButton所指定的按鈕。
Panel是Form的補充控制,能夠經過使用Panel對錶單進行更多的操做,這樣,ASP.NET只能擁有一個Form所引發的一些困難均可以迎刃而解。
原文 http://blog.sina.com.cn/s/blog_568e662301018n2i.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=GBK"> 5 <title>submit例子 - aspxhome.com</title> 6 </head> 7 <body> 8 <h1>本demo演示在文本框中按enter鍵是否觸發提交表單</h1> 9 <h2>默認狀況下,一個文本框的時候,提交,無論按鈕type是submit仍是button</h2> 10 <form action="http://www.csdn.net"> 11 <input type="text"> 12 <input type="button" value="提交"> 13 </form> 14 <h2>一個文本框的時候怎麼才能作到不提交,方法是加一個隱藏掉的文本框</h2> 15 <form action="http://www.csdn.net"> 16 <input type="text"> 17 <input type="text" style="display:none"> 18 <input type="button" value="提交"> 19 </form> 20 <h2>只要有type爲submit的按鈕存在,一個文本框仍是多個文本框都提交</h2> 21 <form action="http://www.csdn.net"> 22 <input type="text"> 23 <input type="submit" value="提交"> 24 </form> 25 <h2>只要有type爲submit的按鈕存在,一個文本框仍是多個文本框都提交</h2> 26 <form action="http://www.csdn.net"> 27 <input type="text"> 28 <input type="text"> 29 <input type="submit" value="提交"> 30 </form> 31 <h2>多個文本框的時候,不提交,用type爲button的按鈕就行啦</h2> 32 <form action="http://www.csdn.net"> 33 <input type="text"> 34 <input type="text"> 35 <input type="button" value="提交"> 36 </form> 37 <h2>用button元素時,FX和IE下有不一樣的表現</h2> 38 <form action="http://www.csdn.net"> 39 <input type="text"> 40 <input type="text"> 41 <button>提交</button> 42 </form> 43 <h2>radio和checkbox在FX下也會觸發提交表單,在IE下不會</h2> 44 <form action="http://www.csdn.net"> 45 <input type="text"> 46 <input type="radio" name="a"> 47 <input type="checkbox" name="b"> 48 <input type="checkbox" name="c"> 49 <input type="button" value="提交"> 50 </form> 51 <h2>type爲image的按鈕,等同於type爲submit的效果</h2> 52 <form action="http://www.csdn.net"> 53 <input type="text"> 54 <input type="text"> 55 <input type="image" src="/images/logo.gif"> 56 </form> 57 </body> 58 </html>