2017-07-25 29 views
0

我的要求是,我必须禁用文本从一个文本框拖放到其他。但是,应该允许手动复制和粘贴。使用ExtJS禁用文本框拖动文本框

me.commentsText = Ext.widget('textfield',{   
      maxLength: 40, 
      enforceMaxLength:true, 
      selectOnFocus : true, 
      fieldStyle: { 
       'font': 'normal 13px roboto' 
      } 
} 

enter image description here

敬请指教。

回答

1

您可以通过删除拖放一系列事件传递的数据来防止拖放复制粘贴。 但ExtJS不会从表单字段中暴露这些事件,所以您必须为文本字段获取Ext.dom.Element并附加到那里。 这应该会让您选择在实际拖放到新字段之前丢弃通过拖动传输的数据。

请参阅以下的例子:

me.commentsText = Ext.widget('textfield',{   
    maxLength: 40, 
    enforceMaxLength:true, 
    selectOnFocus : true, 
    fieldStyle: { 
     'font': 'normal 13px roboto' 
    } 
}); 

me.commentsText.getEl().on('drop', function(event) { 
    event.preventDefault(); 
}); 
+0

非常感谢。这对我来说除了event.dataTransfer.setData('text/plain',null);因为'event.dataTransfer'没有被定义,所以抛出错误的那一行。然而,实现了所需的功能。 – Sreek521

+1

很高兴我能帮到你。删除了上例中的冲突线。刚刚从MDN上的纯HTML/JS展示中调整了该示例。那里的eventData属性可以没有问题地访问。 (https://developer.mozilla.org/en-US/docs/Web/Events/drop#Example) – Mastacheata