在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 屬性。
![]() |
不含病毒。www.avast.com |