我想知道如何觸發由Ctrl+z
組成的事件keycode和由Ctrl+Shift+z
組成的事件keycode?jQuery Trigger keyCode wysiwyg textarea中的Ctrl + Shift + z和Ctrl + z
5
A
回答
5
如果要觸發事件,那麼它應該是這樣的:
HTML
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type=button value=CTRL+SHIFT+Z id=bcsz />
<input type=button value=CTRL+Z id=bcz />
<textarea id=t ></textarea>
</body>
</html>
的JavaScript
var t = document.getElementById('t'), //textarea
bcsz = document.getElementById('bcsz'), //button ctrl shift z
bsz = document.getElementById('bcz'), // button ctrl z
csz = document.createEvent('KeyboardEvents'), //ctrl shift z event
cz = document.createEvent('KeyboardEvents'); // ctrl z event
csz.initKeyboardEvent(
'keydown',
true, // key down events bubble
true, // and they can be cancelled
document.defaultView, // Use the default view
true, // ctrl
false, // alt
true, //shift
false, //meta key
90, // keycode
0
);
cz.initKeyboardEvent(
'keydown',
true, // key down events bubble
true, // and they can be cancelled
document.defaultView, // Use the default view
true, // ctrl
false, // alt
false, //shift
false, //meta key
90, // keycode
0
);
bcz.addEventListener('click', function(){
t.dispatchEvent(cz);
}, false);
bcsz.addEventListener('click', function(){
t.dispatchEvent(csz);
}, false);
但它似乎不起作用。我沒有更多時間花在這上面,但是這是一個安全問題。我會在MSDN,W3C和MDN看到這些文檔,看看是否有真正的方法來做到這一點。
9
使用e.which
已被jquery跨瀏覽器規範化。
$(document).keydown(function(e){
if(e.which === 90 && e.ctrlKey && e.shiftKey){
console.log('control + shift + z');
}
else if(e.which === 90 && e.ctrlKey){
console.log('control + z');
}
});
3
Ctrl和Shift鍵包括在鍵盤事件中,但鍵碼是裁判您按下哪個鍵。 Ctrl和Shift是控制鍵,它們在按鍵事件中有自己的鍵。
例如,如果你按Ctrl+Shift+Z
然後keydown事件會是這樣:
{
altGraphKey: false
altKey: false
bubbles: true
cancelBubble: false
cancelable: true
charCode: 0
clipboardData: undefined
ctrlKey: true
currentTarget: null
defaultPrevented: true
detail: 0
eventPhase: 0
keyCode: 90
keyIdentifier: "U+004C"
keyLocation: 0
layerX: 0
layerY: 0
metaKey: false
pageX: 0
pageY: 0
returnValue: false
shiftKey: true
srcElement: HTMLTextAreaElement
target: HTMLTextAreaElement
timeStamp: 1318460678544
type: "keydown"
view: DOMWindow
which: 90
__proto__: KeyboardEvent
}
正如你可以看到有兩個關鍵的Ctrl
和Shift
鍵,因爲同時按下Z
被按這些鍵是真實的。
所以,你可以檢測到這種事件是這樣的:
document.addEventListener('keydown', function(event){
if(event.keyCode == 90 && event.ctrlKey && event.shiftKey){
// do your stuff
}
}, false);
注意:您要聽多個鍵的鍵盤快捷鍵。 keyup
不起作用。
相關問題
- 1. 在記事本++中覆蓋SHIFT + CTRL + Z
- 2. 字VSTO覆蓋CTRL + Z/Ctrl + Y
- 3. Ctrl Z的工作原理
- 4. 如何發送ctrl + z
- 5. 發送Ctrl + Z到串口
- 6. C++使用問題CIN和CTRL + Z
- 7. 如何在C中發送ctrl + z
- 8. 如何在php中匹配EOF(Ctrl-Z)
- 9. 如何在Perl腳本中按Ctrl-Z
- 10. 如何在智能混帳中「ctrl + z」?
- 11. jQuery的檢查一下左Ctrl +左Shift和向左CTRL +右移
- 12. 禁用Chrome的文本輸入撤消/重做(CTRL + Z/CTRL + Y)
- 13. 我可以使Windows 2.5 ctrl-D退出而不是ctrl-Z嗎?
- 14. 按Ctrl +在TEXTAREA
- 15. 發送ctrl + z到控制檯程序
- 16. BASH:發送SIGTSTP信號(ctrl + z)
- 17. VMWare ctrl-z鍵綁定,如何刪除
- 18. Escape成爲Ctrl-Z - 但爲什麼?
- 19. 將ctrl + z傳遞給對象
- 20. Eclipse的Visual Studio中按Ctrl + Tab和Ctrl + Shift + Tab鍵等效
- 21. 正確的Ctrl + Shift +的sendkey;
- 22. 在Internet Explorer的上,當textarea綁定鍵盤或按鍵盤快捷鍵時Ctrl + Z Ctrl + Y無效?
- 23. Shift和ctrl防止事件發生? (Winapi)
- 24. 如何以不同方式映射Ctrl + A和Ctrl + Shift + A?
- 25. 如何使Emacs(無GUI)區分Ctrl + Shift + S和Ctrl + S?
- 26. 綁定Ctrl + Tab鍵和Ctrl + Shift + Tab鍵在TMUX
- 27. 在Safari中攔截CMD + Z,CMD + SHIFT + Z和CMD + Y
- 28. 如何處理mini-shell中的Ctrl + Z信號。 C
- 29. 把輸入流暫停到java類似於Unix中的Ctrl-Z
- 30. C#datagridview行選擇與CTRL和SHIFT
爲更好的解釋我想知道如何創建經典的撤消和重做按鈕爲一個wysiwyg textarea ...最佳實踐 – sbaaaang