2016-02-26 34 views
0

如何處理多個鍵。像我有多個保存選項,我想一次處理一個按鈕。我沒有得到如何處理整個頁面中的多個保存按鈕我在mvc中使用jquery項目。請幫助在mvc項目中的鍵盤快捷鍵

我使用這個代碼 -

$(document).bind('keydown', 'ALT+S', function() { 
    // ALT+S for saving shortcut 
    if (e.keyId == '#btnSaveCompany') { 
     // here i want to handle a funtion for this key btnSaveCompany 
     funSaveCreation(); 
    } 
}); 

這裏要處理保存按鈕,鍵盤快捷鍵saving.i希望通過這個處理多個按鈕。

+0

這不是'keydown'事件處理程序是如何工作的。閱讀文檔的更多信息:http://api.jquery.com/keydown –

+0

我得到這個,但它的問題,在我的頁面我有多個保存按鈕來保存多個信息,如一個創建和一個彈出保存和另外,我正在爲保存不同的東西,取消和其他目的而變更不同的功能,所以如何處理這種情況,通過這種情況,功能將會發生變化。 –

+0

您需要將您的keydown綁定到html元素/節點,然後*檢查密鑰是什麼。 「ALT + S」不是一個html元素(實際上你完全不需要這個參數 - 如果你在這裏放置了「#btnSaveCompany」,那麼它只會在該按鈕有焦點時才起作用 - 這會使得有一個鍵盤快捷鍵 –

回答

0

在Firefox中使用Alt + S將打開歷史記錄菜單。所以你必須弄清楚你想使用哪個按鍵或熱鍵組合,這些組合不會在瀏覽器熱鍵中觸發。對於下面的例子,我使用Shift + S來觸發一個函數來模擬保存。

活生生的例子:http://codepen.io/larryjoelane/pen/zqOQEd?editors=1010

//variable to hold the value of keydown press 
//combinations 
var saveHotKeys = 0; 

//keysDown flag intialized to false 
var keysDown = false; 

$(document).on("keydown", function(e) { 

    //set keysDown flag to true 
    keysDown = true; 

    //if the keysDown flag is true 
    //and the key pressed is not equal to value stored 
    if(keysDown === true && e.which !== saveHotKeys){ 

     //add key code value saveHotKeys 
     saveHotKeys += e.which; 

    } 

    //debug only(used to determine total value of keydown codes) 
    console.log(saveHotKeys); 

    // SHIFT + S for saving shortcut 
    // Using CTRL + S will invoke 
    // browser hot key 
    if (saveHotKeys === 99) { 

    //call the save function 
    funSaveCreation();  

    } 

}); 

//key up event to clear the flag and hot keys values 
$(document).on("keyup",function(){ 

    //set keysDown flag to false 
    keysDown = false; 

    //clear the saveHotKeys value 
    saveHotKeys = 0; 

}); 

function funSaveCreation() { 

    alert("saved"); 

}