通过拖放复制引导 td

Posted

技术标签:

【中文标题】通过拖放复制引导 td【英文标题】:Copy bootstrap td by drag and drop 【发布时间】:2020-08-20 10:40:18 【问题描述】:

您好,我需要用户可以将右侧表格的名称与左侧表格的名称相关联,填充左侧表格中的空列,因此引导表中有不止一行从另一个表,并且该值不会从初始表中消失。所以我正在尝试使用jquery ui来做到这一点,但它不起作用,我只能拖动第一个值,在我将它拖动到可放置的空白空间后,它会从起始表中消失并且不填充另一个表

这是代码

<script>
    $( function() 
     $( "#draggable").draggable();
     $( "#droppable" ).droppable(
     accept: "#draggable",
     classes: 
     "ui-droppable-active": "ui-state-active",
     "ui-droppable-hover": "ui-state-hover"
     ,
    drop: function( event, ui ) 
     $( this )
      .addClass( "ui-state-highlight" )
      .find( "td" )
       
     );
    );</script>

我移动的值是使用 php fetch_array() 函数从数据库中获取的,并且在我的第二个表的 &lt;td&gt; 中。

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
    integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    
    
      <section class="container-fluid row justify-content-between">
      <!--Table-->
      <div class="col table-responsive">
        <table class="table table-hover table-bordered w-auto" id="tabellaSos">
          <!--Table head-->
          <thead class="thead-dark">
            <tr>
              <th>#</th>
              <th>Surname</th>
              <th>Name</th>
              <th id="droppable" class="ui-widget-header"> chosen <th>
            </tr>
          </thead>
          <tbody>
            <tr>
             <th scope="row">1</th>
              <td>Leopardi</td>
              <td>Giacomo</td>
              <td></td>
            </tr>
          </tbody>
        </table>
      </div>
    <!--Table-->


    <div class="row justify-content-center">
      <!--Table-->
      <div class="col table-responsive">
        <table class="table table-hover table-bordered w-auto" id="tabellaSos">
          <!--Table head-->
          <thead class="thead-dark">
            <tr>
              <th>#</th>
              <th>Name</th>
              <th>Timecode</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <th scope="row">1</th>
              <td id="draggable" class="ui-widget-content">Limone Salmone</td>
              <td>SU5</td>
          </tbody>
        </table>
      </div>
    </div>
    <!--Table-->
    </div>
  </section>

【问题讨论】:

欢迎来到 Stack Overflow。如果我理解正确,您希望用户能够重新排列表格中的列,对吗? @Twisty 我希望用户将右侧表格的名称与左侧表格的名称相关联,对不起我在帖子中的错误解释,现在我会更正它 还是有点不清楚。因此,如果用户将“Limone Salmone”从右侧拖到左侧表格,您希望在自己的列中使用“Limone”和“Salmone”创建一个新行? 【参考方案1】:

不清楚您在帖子中查找的内容。这是一个基于我能辨别的更新示例。

$(function() 
  $("#draggable").draggable(
    appendTo: "body",
    helper: function(e) 
      return $("<div>", 
        class: "drag-helper"
      ).html($(e.target).text().trim());
    ,
    revert: "invalid"
  );
  $("#tabellaSos > tbody > tr > td:last").droppable(
    classes: 
      "ui-droppable-active": "ui-state-active",
      "ui-droppable-hover": "ui-state-hover"
    ,
    drop: function(event, ui) 
      $(this).html(ui.helper.text());
    
  );
);
.drag-helper 
  border: 1px solid #dee2e6;
  padding: .75rem;
  vertical-align: top;
  box-sizing: border-box;
  color: #212529;
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<section class="container-fluid row justify-content-between">
  <!--Table-->
  <div class="col table-responsive">
    <table class="table table-hover table-bordered w-auto" id="tabellaSos">
      <!--Table head-->
      <thead class="thead-dark">
        <tr>
          <th>#</th>
          <th>Surname</th>
          <th>Name</th>
          <th>Chosen</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th scope="row">1</th>
          <td>Leopardi</td>
          <td>Giacomo</td>
          <td></td>
        </tr>
      </tbody>
    </table>
  </div>
  <!--Table-->
  <div class="row justify-content-center">
    <!--Table-->
    <div class="col table-responsive">
      <table class="table table-hover table-bordered w-auto" id="tabellaSos">
        <!--Table head-->
        <thead class="thead-dark">
          <tr>
            <th>#</th>
            <th>Name</th>
            <th>Timecode</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <th scope="row">1</th>
            <td id="draggable" class="ui-widget-content">Limone Salmone</td>
            <td>SU5</td>
        </tbody>
      </table>
    </div>
  </div>
  <!--Table-->
</section>

这允许用户将名称从右侧表格拖到左侧表格的最后一列。由于我们正在创建一个新元素,因此我使用 Drag 项目中的 Text 填充它,以便原始元素保持不变。我使用 CSS 使它看起来像原来的。

查看更多:https://api.jqueryui.com/draggable/

【讨论】:

它工作正常!我只更改了几件事:更改了左侧表中的 id,以便将:last 拖到第二个脚本中,因为这里的名称是可变的,因为它们是从数据库中获取的。

以上是关于通过拖放复制引导 td的主要内容,如果未能解决你的问题,请参考以下文章

Qt拖放:启用复制时无法移动(Ubuntu Gnome)

使用拖放更新数据顺序

有没有办法覆盖 Windows 中现有应用程序的拖放或复制/粘贴行为?

如何轻松复制拖放卡片的 trello 样式? (看板风格的应用程序)[关闭]

拖放 API 和表格行(仅限 vanilla JS)

如何使用 Selenium 获取具有特定内容的 td 表? [复制]