ExtJs:当文本域被聚焦时,在文本字段中手动触发粘贴事件

时间:2014-11-24 13:33:23

标签: javascript extjs extjs4.2

我有一个文本字段,其中应包含剪贴板数据,并且应该在单击或聚焦该文本字段时执行粘贴操作,而不是按Ctrl + V键。

EDITED

我设法触发了粘贴事件,但剪贴板数据为空。

  fld.getEl().on('paste', me.pasteFromClipboard,fld);
  fld.getEl().on('click', function(evt,target){
            var ev=document.createEvent("KeyboardEvent");
            ev.initKeyboardEvent('paste',true,true,window,true,false,false,false,86,86);
            this.getEl().dom.dispatchEvent(ev);
        },fld);

pasteFromClipboard是:

  pasteFromClipboard : function(evt,target){
      var pastedText = "";
      if (Ext.isIE) {
         pastedText = window.clipboardData.getData('Text');
      }
      else if (Ext.isGecko) {
         pastedText = "";
      }
      else if (Ext.isOpera) {
         pastedText = evt.browserEvent.clipboardData.getData('text/plain');
      }
      else if (Ext.isWebKit) {
        //WebKit based browsers. i.e: Chrome, Safari
         pastedText = evt.browserEvent.clipboardData.getData('text/plain');
      }
    evt.stopEvent();
    if(pastedText.indexOf('#') == 0){
        pastedText = pastedText.substr(1,pastedText.length);
        this.setValue(pastedText);  
    }
 }

我怎样才能实现这个目标?

提前致谢。

1 个答案:

答案 0 :(得分:0)

看起来触发事件的对象与侦听事件的对象不同。

fld.on('paste', me.pasteFromClipboard,fld);
fld.on('click', function(evt,target){
    fld.fireEvent('paste'); // Trigger Paste Event.
},fld);

现在,开火和聆听都与fld

相关联