Ответ 1
Я не думаю, что вы можете использовать текстовое поле прямо как droppable, таким образом, я сделал небольшой взлом, который при перетаскивании позиционирует div непосредственно над текстовым полем. Div является фактическим droppable, который затем вставляет текст перетаскиваемого в текстовое поле
Проверьте здесь демо.
http://jsbin.com/egefi (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();
}
});
});