2012-11-15 93 views
1

我正在嘗試在jQuery中將熱鍵放入我的web應用程序中。我試圖綁定Ctrl + U鍵擊。這裏是我有:在jQuery中綁定ctrl + u擊鍵

$(document).keypress(function(e) { 
    if(e.ctrlKey && e.which == 117) { 
     if($("#nav-user-details").length > 0) { 
     $("#nav-user-details").find(".dropdown-menu").toggle(); 
     } 
    } 
}); 

雖然這不工作。我如何綁定這個按鍵?

謝謝。

回答

0

您將不得不使用keydown而不是按鍵。按鍵不會觸發非字符鍵。

$(document).keydown(function (e) { 
    if (e.ctrlKey && e.which === 81) { 
    alert("key pressed"); 
    return false; 
    } 
}); 
+0

所以這是行不通的,'e.which'總是'ctrl'的值。 – Justin

+0

我試過在鉻。它在那裏工作。 使用我使用的確切代碼進行編輯。 – Eric

0
$(document).keypress("u",function(e) { 
    if(e.ctrlKey) 
    alert("Ctrl+U was pressed!!"); 
}); 
+0

所以這個工作,但只有當他們先按'ctrl',然後'u'。有沒有辦法讓它工作? – Justin

+0

當你按下ctrl + *任意鍵時,這仍然會發出警報* – Jamiec

+0

這不是'keypress'的工作方式:http://api.jquery.com/keypress/ – David

3

試試這個請http://jsfiddle.net/TN7GZ/

按下Ctrl鍵+ü屏幕會提醒。

這將滿足您的需要:)

代碼

var isCtrl = false; 
document.onkeyup=function(e){ 
    if(e.which == 17) isCtrl=false; 
} 
document.onkeydown=function(e){ 
    if(e.which == 17) isCtrl=true; 
    if(e.which == 85 && isCtrl == true) { 
     //run code for CTRL+U -- ie, whatever! 
     alert('CTRL + U stuff'); 
     return false; 
    } 
} 
​ 
+0

感謝您使用此代碼片段,它可能會提供一些立即幫幫我。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

0

試試這個:

var prevKey = null; 
$(document).keydown(function (e) { 
    var thisKey = e.which; 

    if (prevKey && prevKey == 17) { 
    if (thisKey == 85) { 
     // Your code. 
    } 
    } 

    prevKey = thisKey; 
}); 
+0

感謝您使用此代碼段,它可能會提供一些即時幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

1

我敢肯定85u的鍵碼,還是我失去了什麼?

如果你想要mac支持(命令鍵),它可能會變得混亂。我寫了一個段之前,可能會幫助你,但它涉及到瀏覽器檢測(呸):

var cmd = false; 

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

    if(detectMacCommand(e.which)) { 
     cmd = true; 
     return; 
    } 

    // now detect print (ctr/cmd + p) 
    if (e.which == 85 && (e.ctrl || cmd)) { 
     e.preventDefault(); 
     alert('ctrl/cmd + u'); 
    } 

}).on('keyup', function(e) { 

    if(detectMacCommand(e.which)) { 
     cmd = false; 
     return; 
    } 

}); 

function detectMacCommand(key) { 
    return ($.browser.mozilla && key == 224 || 
      $.browser.opera && key == 17 || 
      $.browser.webkit && (key == 91 || key == 93)); 
} 

演示:http://jsbin.com/afijam/2

0

如果你在一個Xhtml文件中工作,你會得到一個錯誤The entity must immediately follow the &那麼你應該使用&&&而不是&&

+1

雖然這可能是解決問題的有價值的提示,但一個好的答案也可以證明解決方案。請[編輯]提供示例代碼來展示你的意思。或者,可以考慮將其寫爲註釋。 –