在Web Form中為了避免使用在在按 [ Enter ] 時去觸發了意想不到的按鈕
在頁面上擺上一顆 asp Button 控制項
然後把網頁的預設按鈕指定給它
//PageLoad 時執行
protected void Page_Load(object sender, EventArgs e)
{
//把預設按鈕指定給它
this.Page.Form.DefaultButton = btn_def.UniqueID;
//再把它隱藏起來
btn_def.Style.Add("display", "none");
}
然後給Button的 Click 事件一個空的事件
protected void Button1_Click(object sender, EventArgs e)
{
//什麼都不做,避免使用者誤按Enter用
}
但是這樣還是有個缺點,就是使用者真的按Enter時 依舊會觸發這個空的事件
還是會造成網頁的PostBack,一來一回,頁面跳來跳去的,還是挺煩的
因此,在Button的 OnClientClick 屬性加入
return false;
這樣,就可以直接在Client端 擋掉
當然,有一得,必有一失,就是網頁上本來真的用來做預設 Enter 按鈕也就失效了
只能乖乖地用滑鼠按
上述的作法,雖然不盡完善
事實上,可以更完美的,逐個控制項去指定要觸發的或者不觸發的事件,用JavaScript來處理
不過案例中的這一支程式,是薪資程式....光輸入用的欄位就有200多個,為此逐一去加入處理事件真有點呆
只要能讓他正常運作,不出錯,原則上就達到需求
還是把重點放在邏輯處理上吧