2014-02-13 18 views
0

假設我有一個jQuery文件,我已經定義了一個按鍵動作。在我的aspx頁面中,我想覆蓋該按鍵操作。 我該如何做到這一點?我們怎麼能在jquery中寫按鍵事件

+0

對不起,你能解釋一下,如果你想抑制你的按鍵處理或事件本身比較好? – MarcoL

+0

嗨馬可,我有以下代碼在jquery文件 – Divya

+0

嗨馬可,我有以下代碼在jquery文件中 - $(document).ready(function(){(document).mapHotKeys( [ [ {key:'shift + F2',action:function(){alert('blocked by hotkeys。');} } ] ); });我想在我的頁面 – Divya

回答

0
$('#item').unbind('keypress'); 
0
  var input = '#txtId'; //txtid is ur textbox,textarea id 

      $(input).keypress(function(e) { 

          e.preventDefault(); 

     }); 
0

想象一下,你有這樣的場景:

var handler = function(){ ... } 

$('body').on('keypress', ':input', handler); 

然後你就可以刪除特定的處理 - 對他人沒有什麼影響 - 有以下幾點:

$('body').off('keypress', ':input', handler); 

要刪除全部按鍵處理程序只需調用它而不通過處理程序

$('body').off('keypress', ':input'); 

要從特定元素中刪除所有事件處理程序只是用它不帶參數

$(':input').off(); 

相反,如果你想簡單地阻止默認行爲,只需使用preventDefault功能

$('body').on('keypress', ':input', function(e){ 

    e.preventDefault(); 

    ... 
}); 

相反,你只需要使用你的處理函數就可以使用jQuery中的once函數,它將綁定你的處理程序並在執行結束;

對不起,很長的回答,但你的問題並不完全清楚。

文檔link for jQuery off()

+0

上寫下這個動作嗨Marco,我的場景就是這樣 - 我寫了一些全球性的按鍵事件,這些事件在所有頁面中都很常見。 現在我想在另一個事件中寫出全局事件中的按鍵事件。 假設在關鍵「Ctrl」的全局事件中,我的行爲是「Alert('Hi')」;所以在其中一個頁面上,我想將其寫爲「Alert('Hello'); 我該怎麼做到這一點? – Divya

+0

我想你可以按照我寫的第一個場景,一個用處理程序,然後註冊一個新的處理器與你想要的行爲 現在的問題可能是:你如何獲得處理程序,如果它在另一個文件中? 一個不同的解決方案可以改爲重寫你的jquery文件中的東西,在每個頁面中定義並且它可以訪問 - 也許一個全局變量是最容易的事 – MarcoL

+0

如果你想嘗試「註銷處理程序」的方式,確保你可以以某種方式到達處理程序 - 這裏也是最簡單的,但不是最好的,選擇可以是在全局名稱空間中定義它,否則一個非常困難的解決方案可能是檢查哪些處理程序在jQuery中註冊了該事件並獲取您正在尋找的一個:http:// stackoverflow。COM /問題/ 2518421/jQuery的發現事件處理者註冊與 - 一個對象 – MarcoL