Asp.NetEnter鍵觸發Button的OnClick事件解決方案

王磊的部落格發表於2014-12-18

 

在aspx頁面有textbox文字框,還有三個button按鈕。啟用textbox的TextChanged事件和button的click事件。

問題:

現在在textbox文字框輸入完資料按“回車”後,會觸發TextChanged事件,但同時還會觸發該頁面第一個button按鈕的Click事件。

解決方法一:

當在文字框中敲回車的時候,表單提交。因為在.net中一個Page只有一個form表單。所以也就有一個Sumbit事件。

當UseSubmitBehavior的屬性是True的時候,表單的提交就會觸發此事件。

先後順序是先觸發點選事件,然後觸發 UseSubmitBehavior為True的button的click時間。

當然如果有多個button就會預設的觸發第一個button事件。

為了解決該問題將UseSubmitBehavior改為false即可。(多個button時,UseSubmitBehavior全改為false。)

解決方法二:

(當你要用button的OnClientClick彈出確認視窗的時候,如果UseSubmitBehavior為false,不論你選擇什麼都不會執行伺服器的button的OnClick程式碼,這時候就需要用解決方法二)

解決方法來自孟子E章:

private   void   Page_Load(object   sender,   System.EventArgs   e)   
{   
  TextBox1.Attributes.Add("onkeydown","if(event.keyCode==13)   {this.blur();return   false}");   
}   
private   void   Button1_Click(object   sender,   System.EventArgs   e)   
{   
  Response.Write("Button");   
}   
private   void   TextBox1_TextChanged(object   sender,   System.EventArgs   e)   
{Response.Write(TextBox1.Text);   
}

 (確保TextBox1的AutoPostBack屬性為True,實際使用中發現,只要設定為true,不需要上面的程式碼也可以解決問題。)

 另外,可以設定 客戶端ID.focus()  or  設定tabIndex 屬性。

 

相關文章