2011-04-19 55 views
1

我在這裏研究了SO這個問題,並試圖解決顯然這沒有工作,所以這裏是:asp.net ImageButton的射擊回車鍵

我有一個非常複雜的形式與其他控件中,三個自動填入文本框。

我也有一個客戶,他們似乎無法停止在文本框中輸入值並按Enter鍵從自動完成列表中選擇所需的值。

當他們點擊Enter時,表單中的第一個圖像按鈕會觸發,做的事情完全不同。所以對他們來說,表格被破壞了。

我需要做的是防止Enter鍵觸發這些圖像按鈕(它們中有10個)。

我試圖在兩者的Page_Load和Page_LoadComplete,無論其工作的下面的代碼:

imgbtn1.Attributes.Add("onkeydown", "return (event.keyCode!=13);") 

,節省了我幾毛認識任何意見。

+0

所以感受你的痛苦。我曾威脅要撬出客戶鍵盤上的所有輸入密鑰。 – greg 2016-02-13 14:59:12

回答

0

第二個鏈接Subhash Dike發佈(Disable Enter Key)爲我工作。我有兩個ImageButtons,並且它們都不會在使用此功能時觸發回發(從原始位置修改位),這非常棒。

  document.onkeypress = function (evt) { 
      return ((evt) ? evt : ((event) ? event : null)).keyCode != 13; 
     }; 
0
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Me.Page.Form.DefaultButton = BtSearch.UniqueID 
     If Not IsPostBack Then 
      ' ............... 
     End If 
End Sub 
0

我也有類似的問題。 Listview1.ImageButton響應ENTER。 我們真的想SAVE發生(或沒有,但壞行爲重新加載頁面,這讓他們脾氣暴躁)

  1. 設置爲窗口,以趕上事件的處理程序。我這樣做是docReady()

    function docReady() { 
    
    $(document).keydown(mapKeyCode); 
    
    }; 
    
  2. 在該處理程序,找到你想要捕捉的鍵碼(輸入爲13)

https://css-tricks.com/snippets/javascript/javascript-keycodes/

 function mapKeyCode(event) { 
    { 


     if (event.keyCode == 13) { 
      //event.stopPropagation(); 
      //event.preventDefault(); 
      __doPostBack('ctl00$cp1$InventoryPieces$btnSubmit', ''); 

     } 
    } 

event.StopPropogation會什麼都不會發生。擊鍵只是吃了。這可能是你想要的。你仍然可以自由地調用下面的ajax方法,這不是事件的一部分。

event.PreventDefault應該阻止事件執行通常的操作。我遇到了麻煩,看到了這條線的註釋與否。 SO上有關於preventDefault和ENTER的深入討論。

這第三行是支付我的人希望在按ENTER鍵時發生,即使他們可能應該打標籤。我試過(#)。trigger()並沒有太多的運氣。檢查元素,我看到它調用了__postback,所以我粘貼了它。我相當確定()。如果我發現自己做錯了什麼,觸發器就會工作,我只是另闢蹊徑。

這對我來說很討厭,但它完成了目標。

希望它有幫助。