Asp.Net Form表單控制元件的回車預設事件
在WEB頁面上,通常SUBMIT型別的按鈕會被預設指派為所在FORM表單的提交按鈕
在做ASP.net WEB應用的時候,常常遇到會在同一個頁面裡新增多個按鈕,而每個按鈕肯定都會觸發頁面回送事件。
在ASP.NET中,只能指定一個帶有runat="server"的FORM表單,因此,這個表單會指派哪個按鈕為預設提交按鈕呢?
不做任何處理的情況下是很難控制的,例如在同一個頁面裡做了N個搜尋框,設計上理想的思路是在某一輸入框輸入關鍵字後,使用者按ENTER鍵,執行當前輸入的輸入框對應的提交按鈕,但是,實際上往往事與願違。無論怎麼提交,總是會只執行某一個按鈕事件。
如果指定Form的預設按鈕,可以指定Form的DefaultButton屬性值為一個按鈕的ID。但這樣下來,回車時就永遠執行這個按鈕,其它按鈕無法被回車觸發。
網上很多方法都是使用JAVASCRIPT來進行判斷,在輸入框中加入KEYPRESS之類的事件,然後檢查eventCode,如果是回車鍵,那麼就指定執行某一個按鈕。
這個方法不是不行,但是,並不好維護,而且在處理複雜的邏輯時,往往不好控制。
其實,ASP.NET給出了很好的解決方案,只是通常不被人注意。
首先,遮蔽瀏覽器提交模式,也就是說,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所引起的一些困難都可以迎刃而解。
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>
相關推薦
Asp.Net Form表單控制元件的回車預設事件
在WEB頁面上,通常SUBMIT型別的按鈕會被預設指派為所在FORM表單的提交按鈕 在做ASP.net WEB應用的時候,常常遇到會在同一個頁面裡新增多個按鈕,而每個按鈕肯定都會觸發頁面回送事件。 在ASP.NET中,只能指定一個帶有runat="server"的FORM表單,因此,這個表單會指派
form表單控制元件向後臺傳遞陣列
後臺: public class MSelectDetail { private Integer xxx; private String xxxx; private Str
asp.net中的html控制元件點選事件與伺服器控制元件點選事件的不同
ASP.NET中Onclick和OnserverClick事件的區別 對於伺服器按鈕控制元件(即<asp:Button>型別的按鈕): 伺服器響應事件:OnClick 客戶端響應屬性:OnClientClick 對於html按鈕控制元件(即<input t
C# 新增Excel表單控制元件(Form Controls)
在Excel中,新增的控制元件可以和單元格關聯,我們可以操作控制元件來修改單元格的內容,在下面的文章中,將介紹在Excel中新增幾種不同的表單控制元件的方法,包括: 新增文字框(Textbox) 單選按鈕(Radio button) 複選框(Checkbox
Vue之表單控制元件繫結
1.text <p>text輸入文字</p> <span>Hello {{name}}</span> <input type="text" v-model="name" placeholder="yous name" name
asp.net 如何獲取html控制元件select
只有設定了 runat="server" ,在後臺才可以訪問。示例:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition
不使用ASP.NET中的伺服器控制元件將如何上傳檔案?
遇到檔案的上傳時,可能會有大部分的開發者喜歡使用伺服器控制元件,雖然很方便,但是卻不能很好的控制,不具靈活性。 現給出例子,使用html標籤語言靈活的控制檔案的上傳。 1、html部分 <input type="file" id="uploadFile" name="uploa
ASP.NET遇到問題---Loginview控制元件
Exam8_4.aspx: <%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD
【ASP.NET】——WEB伺服器控制元件
WEB伺服器控制元件分類: 內部控制元件 列表控制元件 複雜控制元件 驗證控制元件 內部控制元件 ASP.NET引入一組稱為“內部控制元件”的新控制元件,專門用於ASP.NET 內部控制元件的使用方法與HTML控制元件相同,他們對映到HTML元素並通過
第三章 表單 3-4 表單控制元件
1、輸入框inputbootstrap通過對input標籤的type屬性進行識別,得到相應的格式,所以input標籤一定要對type進行指定。另外,還需通過form-control對輸入框進行規範統一,此外,可以用placeholder對框內內容進行初始化。 <form role="form"&
Vue 表單控制元件
js檔案 var vm = new Vue({ el: '#app', data: { msg : '', age : u
細說 Angular 的自定義表單控制元件 (贊,實用)
我們在構建企業級應用時,通常會遇到各種各樣的定製化功能,因為每個企業都有自己獨特的流程、思維方式和行為習慣。有很多時候,軟體企業是不太理解這種情況,習慣性的會給出一個診斷,『你這麼做不對,按邏輯應該這樣這樣』。但企業往往不會接受這種說法,習慣的力量是強大的,我們一定要尊重
Vue 的(v-model)表單控制元件繫結
v-model 為表單控制元件元素建立資料雙向繫結。(將js變數的值 快速 設定到控制元件上,然後將使用者輸入內容 快速 設定回js變數) <!DOCTYPE html> <html lang="en"> <head> <m
HTML5(一)語義化標籤、新增表單控制元件
1、新的頁面結構以及寬鬆的語法規範 <!doctype html> <meta charset="utf-8"/> 2、語義化標籤 (1)<header></header> 頁首:主要用於頁
ASP.NET關於使用CreateUserWizard控制元件實現註冊需注意的要點
1. NextButtonClick所對應的方法引數中的WizardNavigationEventArgs 所對應的例項e,它所對應Cancel屬性是否執行sqlcommand命令,假如你通過使用CreateUserWizard進行註冊,沒有對不符合要求的情況進行對Cancel屬性的fals
asp.net 自定義伺服器控制元件屬性 [Bindable(true)]...
自定義伺服器控制元件屬性的特性:Bindable這個特性表示屬性是否可以繫結一個有效資料來源。通常使用布林值進行設定。例如:Bindable(true)。如果使用值true標記屬性,表示該屬性可以繫結一個有效資料來源,且應引發該屬性的屬性更改通知。Browsable指定屬性是否應該在屬性瀏覽器中顯示,使用布林
vuejs表單控制元件繫結
一、基礎語法 vuejs中用v-model指令在表單控制元件元素上建立雙向資料繫結。它會根據控制元件型別自動選取正確的方法來更新元素。但要注意的是v-model僅僅是語法糖,它只負責監聽使用者的輸入時間一更新資料,並特別處理一些極端的例子。 注:1.·v
js 動態新增多表單控制元件 div
<script type="text/javascript"> var p=1; function CreateUpload() { p++; var div=document.createElement('div'); var html
HTML常用行標籤和表單控制元件
HTML常用的行級標籤 行內元素不獨佔一行 HTML連結 a標籤 href屬性是必須要的屬性,target指定連線以何種方式開啟,_blank用新視窗開啟,預設是self原視窗開啟。 <a href="連結" target="_blank">連結文字</a&
ASP.NET 中的資料來源控制元件
SqlDataSource 控制元件可以快取其檢索的資料,這樣避免了高開銷的查詢,從而可以增強應用程式的效能。幾乎在資料變動不是太頻繁的所有情況下,快取都具有實用價值。 預設情況下不啟用快取,但是您可以通過將 EnableCaching 設定為 true 來啟用快取。快取機制基於時間;您可以將 CacheDu