【问题标题】:HTML/JavaScript drag-and-drop but change the text DURING the dragging?HTML/JavaScript 拖放但在拖动过程中更改文本?
【发布时间】:2015-10-07 04:22:12
【问题描述】:

我创建了一个简单的 html 网页。 用户需要选择像 1.23 这样的文本,然后将其拖放到另一个浏览器中。 这一切都完美无缺。 (我不需要编写任何代码就可以让它工作。我认为这都是浏览器内置功能的一部分。)

我需要将这个数字四舍五入到 1.5。我在四舍五入时没有问题, 但是我如何才能在拖动过程中捕捉(并更改)值?我不想更改第一个浏览器中的值,它需要保持为 1.23... 我只需要在拖放开始和拖放之间进行舍入 ,进入第二个浏览器窗口。

可以吗?我会发布一些代码,但是就像我说的那样,这一切都可以在没有任何代码的情况下工作......除了“更改同时拖动部分”。

我宁愿编写自己的代码,仅仅为了这 1 个小功能而拖入像 jquery 这样的海量代码库。

【问题讨论】:

  • 你可以这样做when copying the textCtrl + C 或右键单击和复制),但我不知道你是否可以在拖动时这样做。不能在接收窗口做吗?粘贴数据后,进行处理?
  • 能不能不用javascript的.hover()函数,然后在移动的时候看看item是不是不在原来的位置?
  • “我只需要在drop之后做回合” - 你试过用onDrop event:developer.mozilla.org/en-US/docs/Web/Guide/HTML/…

标签: javascript html drag-and-drop


【解决方案1】:

也许您可以尝试在浏览器启动时更改文本并在删除后将其还原?试试这样的:

https://jsfiddle.net/Domination/4zejjygk/1/

HTML:

<div id="dragEl" draggable='true'>1.5343</div>

JS:

//This is the element
dragItem = document.getElementById("dragEl");

//This is the event that changes it when mouse is over
dragItem.addEventListener("mouseover", HandleStart);

//These are events that change it back when the dragging is finished
dragItem.addEventListener("mouseout", HandleEnd);
dragItem.addEventListener("dragend", HandleEnd);
temp = dragItem.innerHTML;

//This is launched when it is hovered over
function HandleStart(e){
    e.preventDefault();
    text = e.target.innerHTML
    rounded = Math.round(Number(text)*10)/10; //Rounds the number to two decimal places
    e.target.innerHTML = rounded; 
}

//This is launched when dragging has finished
function HandleEnd(e) {
    e.preventDefault();
    e.target.innerHTML = temp; //Reverts to original
}

如果您可以访问您将其拖到的其他页面,您可以按照 Ivan 的建议进行操作,并在您将其拖放到的部分上使用 ondrop 事件...

https://jsfiddle.net/Domination/tgy7xgvx/1/

【讨论】:

  • 很遗憾,我无法访问“目标页面”。想象一下将一些东西放到 google.com 中。
  • 我无法让 jsfiddle 工作。我无法选择 1.512345... 当它跳到 1.5 时我也无法选择它。我宁愿不更改向用户显示的文本……只在“拖动”和“拖放”之间更改它。
  • 这个小提琴在这里改变文本的值,当被丢弃时,使用 dataTransfer.setData:jsfiddle.net/Domination/n82ubLtn
  • 这些即将推出 404
  • 糟糕 - 我将我的 jsfiddle 用户名从 Domination 更改为 domslee,这破坏了所有链接。如果您更改用户名,链接仍然有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2010-12-05
  • 1970-01-01
  • 2017-06-09
相关资源
最近更新 更多