使用jQuery,并希望让用户将占位符拖到文本区域。jQuery拖放到文本区域
每个占位符是一个<span>
它有一个class='placeholder'
。文本区id
只是'main_text'
。
因此,用户应该能够将每个占位符span
拖放到文本区域的顶部,放下它,然后插入文本。
最理想的效果是在放置占位符的地方插入文本,但我几乎放弃了这一点。在这一点上,只是为了让它工作,所以它在任何地方插入文本将是一个好的开始。
有没有人成功地做到这一点?谢谢 -
使用jQuery,并希望让用户将占位符拖到文本区域。jQuery拖放到文本区域
每个占位符是一个<span>
它有一个class='placeholder'
。文本区id
只是'main_text'
。
因此,用户应该能够将每个占位符span
拖放到文本区域的顶部,放下它,然后插入文本。
最理想的效果是在放置占位符的地方插入文本,但我几乎放弃了这一点。在这一点上,只是为了让它工作,所以它在任何地方插入文本将是一个好的开始。
有没有人成功地做到这一点?谢谢 -
我不认为你可以直接使用textarea作为droppable,因此我做了一些小工具,在drag-start上直接在textarea上放置一个div。股利是(用于代码http://jsbin.com/egefi/edit)的实际可放开,然后在这里插入可拖动文本到文本区域
检查演示
它插入在当前textcaret位置我不不要认为插入当前鼠标光标位置是可能的。
function insertAtCaret(area, text) {
//... adapted from http://www.scottklarr.com/topic/425/how-to-insert-text-into-a-textarea-where-the-cursor-is/
}
$(document).ready(function() {
var options = {
accept: "span.placeholder",
drop: function(ev, ui) {
insertAtCaret($("textarea#main_text").get(0), ui.draggable.eq(0).text());
}
};
$("span.placeholder").draggable({
helper:'clone',
start: function(event, ui) {
var txta = $("textarea#main_text");
$("div#pseudodroppable").css({
position:"absolute",
top:txta.position().top,
left:txta.position().left,
width:txta.width(),
height:txta.height()
}).droppable(options).show();
},
stop: function(event, ui) {
$("div#pseudodroppable").droppable('destroy').hide();
}
});
});
嗯,它似乎工作。我仍然认为,如果没有占位符放在确切的位置上,它在真实世界的应用程序中无法使用,所以我将不得不决定是否要在我的应用程序中使用它,但正如我所说的那样 - 回答了问题。谢谢 - – OneNerd 2009-12-18 00:46:39
您是否找到了放置占位符放置位置的解决方案?我也需要这个... – SimonW 2013-04-11 21:19:01