Search code examples
javascriptjquerytriggerswysiwygkeycode

jQuery Trigger keyCode Ctrl+Shift+z & Ctrl+z in wysiwyg textarea


i was wondering how do i trigger the event keyCode composed by Ctrl+z and the event keycode composed by Ctrl+Shift+z ?


Solution

  • If you want to trigger the event then it should be something like this:

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

    LOOK AT JSBIN LINK

    But it seems it doesn't works. I don't have more time to spend on this, but yeah this is kind of a security issue. I would see these docs at MSDN, W3C and MDN to see if there is a real way to do this.