有没有办法识别何时使用jQuery将文本拖放到输入元素中?

MRA*_*MRA 4 html javascript jquery

通常,当将标记的文本拖放到HTML输入元素中时,标记的文本将复制到该输入字段中的光标位置(并添加到任何现有文本).我想使用jQuery改变这种行为,使其类似于(例如)Firefox地址字段的行为,即:

  • 可以通过键入(像往常一样)添加和修改文本.
  • 当文本从外部拖动并放入输入元素时,输入中的所有现有文本都将被拖动的文本替换.
  • 在输入字段中拖放文本时,拖动的文本将移动到光标的位置.(很棒的功能,但不是那么重要)

有谁知道实现这一目标的方法?任何帮助表示赞赏.

在我看来,为此,我需要识别某种"拖放"事件并访问拖动的文本,虽然我不知道这是否可能.我想到的场景的(非功能性)模型如下所示:

HTML:

<p>drag-and-drop text into this:</p>
<input id="giveittome" value="some text"></input>
<p>other text</p>
<p>more text</p>
<p>whatever</p>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$('#giveittome').on('drag-and-drop' , function (event) {
    $(this).val(event.getDraggedText());
});
Run Code Online (Sandbox Code Playgroud)

来源@ jsFiddle.

Nea*_*eal 5

试试这个:(它适用于大多数现代浏览器)

$('input').on('keydown change paste drop',function(event) {
    var _this = this;
    setTimeout(function() {
        console.log(_this.value, event.type);
    }, 0); //this timeout is necessary  to get the value
});
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/maniator/7skY7/