关于如何在浏览器中实现拖放支持有很多讨论,但事实是他们希望保护事物。我的意思是理论上你可以打电话
event.dataTransfer.setData("Text", newValue)
在您的放置处理程序中,但由于他们说的“安全原因”,它无法工作。很遗憾,因为这对您来说是最好的解决方案,我的意思是在文本被删除之前更改文本。
相反,我认为你可以通过一个小“黑客”来解决你的问题
<input id="target" type="text" value="aaa bbb ccc" />
<input id="source" type="text" value="good bad" />
和js
<script type="text/javascript">
$(function () {
var drop = false;
$("#target").bind("drop", function (e) {
// you can store the dragged text if you like
//var text = e.originalEvent.dataTransfer.getData("Text");
drop = true;
});
$("#target").bind("focus", function (e) {
if (drop) {
// you can get caret here, etc
$("#target").val($("#target").val().replace("bad", ""));
drop = false;
}
});
});
</script>
在 Chrome 中进行了测试,但它也应该适用于所有浏览器。
我希望这就是你要找的。