1. 程式人生 > >Asp.Net Form表單控制元件的回車預設事件

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