【问题标题】:jstree dnd plugin: cannot drag and drop multiple nodes on the target without the previous dragged node getting overwrittenjstree dnd插件:无法在目标上拖放多个节点而不覆盖先前拖动的节点
【发布时间】:2015-05-26 08:09:25
【问题描述】:

Context : 如下代码所示,在jsp里面的输入框中,从“fruitTree”中拖拽出的水果节点。

这在拖放时成功发生。每次我从fruitTree中拖放水果时,之前拖放的水果节点都会被新拖放的水果覆盖。

问题:现在,之前拖放的水果不能被新的拖放水果节点覆盖。输入框内应该可以拖拽多个水果。

jsp:

      <div id = "mydiv">
            <form id="addFruits">
              <div id ="fruitDetails">
              <label>Name:</label>
               <input type="text" value="" name="fruitName" id="fruitNameId" class="jstree-drop"/>
        </div>
        </form>
        </div>
<div id="fruitTree">
</div>

在javascript中:

$('div#fruitTree').jstree({

"crrm":{
"move":{
"check_move":function(m){
return false;
}
}
},
"json_data:{
"data":fruitDataReceivedFromDBSuccessfully
},
"themes":{
"theme":"apple",
"icons":true
},
"dnd":{
"drop_finish":function(data){
$('#fruitNameId').attr("value", $(data.o).attr("name");
},
"drop_check":function(data){}
},
"plugins":["themes","json_data","ui","languages","contextmenu","dnd","search","cookies","crrm","core"]
});

我不确定 jstree dnd 插件是否允许在同一个目标上进行多次拖放而不覆盖先前的值。我已经尝试使用 jstree 的核心插件来解决这个问题,但它不起作用:

"core" {
"multiple:true,
"animation":0
}

有什么建议吗?

【问题讨论】:

  • 我认为您使用的是 jsTree v.1?考虑升级 - v1 多年来一直不受支持,我怀疑你会找到帮助你的人(因为我是插件的创建者,我可以向你保证 v3 得到积极支持)。
  • :) @vakata 得到大师的回复真是太好了!!!我会按照你说的升级到 v3,看看它是否允许同时拖放多个节点......如果不是,那么我必须绕过!
  • v3 支持多个节点拖放,但请记住,api 已经发生了一些变化 - 将其视为新产品并阅读 repo 和 jstree.com 中的文档(repo 是更好一点,因为它有 jsfiddles)。
  • @vakata 当我浏览文档时,我有一个疑问要分享。默认情况下,核心插件允许选择多个节点。但在我的情况下,我试图从 jstree 中拖动多个节点并拖放到要提交的表单元素内的输入框上。输入框有一个 class="jstree-drop" 使其可放置。我们是否有像 class="jstree-drop-multiple" 这样的东西,以便可以将多个节点拖放到输入框上而不会覆盖之前的拖放。我已经发布了一个解决方法,但我想 jstree 本身可以让我在没有解决方法的情况下实现这一目标。
  • 这是您在 v.3 中实现外部项目 DND 的方式:groups.google.com/d/msg/jstree/BYppISuCFRE/KKh7oHZzNkwJ 是否覆盖之前的项目完全取决于您。这里也是小提琴:jsfiddle.net/DGAF4/517

标签: javascript jquery drag-and-drop jstree jstree-dnd


【解决方案1】:

作为一种解决方法,我已经做了如下的事情:

    "drop_finish":function(data){
    if($('#fruitNameId').attr()!=""){
        $('#fruitNameId').attr().append($('#fruitNameId').attr("value", $(data.o).attr("name"));
} else {
    $('#fruitNameId').attr("value", $(data.o).attr("name")
    }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多