2017-07-25 50 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