【问题标题】:Disable the drag-and-drop for text禁用文本的拖放
【发布时间】:2019-08-15 23:17:21
【问题描述】:

我正在为图像文件开发一个拖放系统,我注意到dragenter 事件也会在选定的文本拖动时执行。

$(document).on("dragenter", "#element", function(event){
    event.preventDefault();

    // Check if we are dragging text

    if(is_text){ // <- HERE
        console.log("dragging text!");
    }else{
        console.log("dragging file!");
    }
});

我想检测拖动的对象不是文本,所以之前的console.log如果是就不会运行。

更新和解决方案:

var dragging_text = false;

$(window).on("dragstart", function(event){
    dragging_text = true;
    console.log("dragstart");
});

$(document).on("dragenter", "#element", function(event){
    event.preventDefault();

    if(dragging_text){
        console.log("NO, dragging text!");
    }else{
        console.log("OK, dragging file!");
    }
});

【问题讨论】:

  • 就是不明白你说的文字是什么意思,不能拖拽文字!
  • @mooga dragenter 事件在您选择并拖动文本时触发。我想避免它。

标签: javascript jquery drag-and-drop


【解决方案1】:

这将帮助您了解:

 var dragging_text = false;

$(window).on("dragstart", function(event){
    dragging_text = true;
    console.log("dragstart");
});

$(document).on("dragenter", "#element", function(event){
    event.preventDefault();

    if(dragging_text){
        console.log("NO, dragging text!");
    }else{
        console.log("OK, dragging file!");
    }
    dragging_text = false;
});

【讨论】:

  • 我研究了dragstart,它似乎工作正常。我用我的解决方案更新了帖子。
  • 别忘了加上'dragging_text = false;'在 dragenter() 事件中,告诉我它是否有效。
  • 谢谢,我忘了在dragenter 事件中包含dragging_text = false;。我已经完成了测试,它似乎工作正常。
【解决方案2】:

您需要查看DataTransfer

$(document).on("dragenter", "#element", function(event){   
    if(event.dataTransfer.files.length > 0){ // <- HERE
        console.log("dragenter");
    }else {
        event.preventDefault();
    }
});

【讨论】:

  • 我已经更新了这个问题,看看现在是否更好理解了。
  • 用过if(event.dataTransfer.files.length &gt; 0){ ?
  • 是的,但是使用该行它不允许我拖动文件。
  • 反正被你屏蔽了,我改了代码,试试看
  • dataTransferdragenter 事件中工作?我已经记录并发现它不起作用。
猜你喜欢
  • 2010-12-08
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多