在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 屬性。