2011-10-12 13 views
5

में मैं सोच रहा था कि मैं Ctrl+z द्वारा रचित इवेंट कीकोड को कैसे ट्रिगर करता हूं और Ctrl+Shift+z द्वारा रचित इवेंट कीकोड कैसे ट्रिगर करता हूं?jQuery ट्रिगर कुंजीकोड Ctrl + Shift + z और Ctrl + z wysiwyg textarea

+0

? यह काम नहीं कर रहा है – sbaaaang

उत्तर

5

आप तो घटना को गति प्रदान करना चाहते हैं यह कुछ इस तरह होना चाहिए:

एचटीएमएल

<!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> 

जावास्क्रिप्ट

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); 

LOOK AT JSBIN LINK

लेकिन ऐसा लगता है कि यह काम नहीं करता है। मेरे पास इस पर खर्च करने के लिए और अधिक समय नहीं है, लेकिन हाँ यह एक सुरक्षा मुद्दा है। मैं इन दस्तावेज़ों को MSDN, W3C और MDN पर यह देखने के लिए देख सकता हूं कि ऐसा करने का कोई वास्तविक तरीका है या नहीं।

बेहतर स्पष्टीकरण मुझे पता करने के लिए एक wysiwyg पाठ क्षेत्र के लिए क्लासिक पूर्ववत & पुन: बटन बनाने के लिए कैसे ... सबसे अच्छा अभ्यास
+0

thx कोई समस्या आदमी नहीं! ;) – sbaaaang

+3

तो यह सब कोड और यह काम नहीं करता है? क्या बात है। –

+0

@azizpunjani ओह क्षमा करें आपका फ्री कोड स्रोत इस समय काम नहीं करता था। शायद आपको दस्तावेज पढ़ने की जरूरत है! – Mohsen

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'); 
     }   
}); 
+0

आप भी इस कोड का परीक्षण किया था चाहते हैं के लिए – Mohsen

+0

Fiddle http://jsfiddle.net/pZgB2/1/ –

+0

मैंने आपका संपादन देखा। यह अब अच्छा है। अभी भी ctrl + shift + z ftrl ctrl + z। यह ठीक है: http://jsfiddle.net/pZgB2/2/ – Mohsen

3

कुंजी और शिफ्ट कुंजी महत्वपूर्ण घटनाओं में शामिल हैं लेकिन कुंजीकोड आप जिस कुंजी को दबाते हैं उसे रेफर कर रहा है। 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); 

नोट: आप एक से अधिक कुंजी कुंजीपटल शॉर्टकट के लिए keydown को सुनने चाहिए। keyup काम नहीं करेगा।

संबंधित मुद्दे