在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多個,為此逐一去加入處理事件真有點呆

只要能讓他正常運作,不出錯,原則上就達到需求
還是把重點放在邏輯處理上吧

arrow
arrow
    全站熱搜

    ADOLPH 發表在 痞客邦 留言(0) 人氣()