我正在创建一个界面,允许用户将预设响应拖放到“回复”<textarea>
中。我决定使用 jQuery UI。
问题:输入.droppable()<textarea>
后,功能被破坏。
我可以单击内部<textarea>
然后将文本放入其中,但输入后,我无法将任何文本放入<textarea>
...
jQuery:
$(document).ready(function(){
$(init);
// Initialization
function init(){
// Draggable
$(".response").draggable({
helper : "clone",
cursor : "move"
});
// Droppable
$(".survey-reply textarea").droppable({
accept : ".response",
drop : dropResponse
});
}
// When Dropped
function dropResponse(event,ui) {
var draggable = ui.draggable;
// Get existing text
var text = $(this).text();
// If field is empty then just apply the dragged response
if (text == "") {
$(this).text(draggable.children(".saved-response").val()).appendTo(this);
}
// If not, then add the dragged response to the present text
else {
$(this).text(text + ' ' + draggable.children(".saved-response").val()).appendTo(this);
}
}
});
这完成了我需要的(几乎)。它允许我将<li>
响应拖到<textarea>
. 它还编译文本而不是替换<textarea>
.
它不能做什么:我需要用户能够输入<textarea>
,然后将响应拖到 中<textarea>
,此时预设响应被添加到输入的文本中。
目前,我可以在 内部单击<textarea>
,当它处于焦点时,将响应拖入其中。但由于某种原因,输入<textarea>
禁用可放置事件......
如果有人能帮我弄清楚如何在文本区域中输入,然后将响应拖到同一个文本区域中,我会很感激的!
注意:我没有包含 HTML,但我向您保证,选择器是准确的。我确实有一个占位符属性应用于<textarea>
. 我不相信这与这个问题有任何关系(因为拖放文本会消除显示的占位符文本......