我有<textarea>
用户可以向世界输入他的信息!下面,有上传按钮...我想添加上传文件的链接(不用担心,我有它);就在他输入的文字旁边。
喜欢,他输入'Hello,world!',然后上传文件(通过AJAX完成),并在<textarea>
内容的下一行添加该文件的链接。注意!是否可以将光标(他离开的位置)保持在同一个地方?
所有这些都可以通过jQuery完成......任何想法?我知道有方法'append()',但不会出现这种情况,对吗?
答案 0 :(得分:15)
尝试
var myTextArea = $('#myTextarea');
myTextArea.val(myTextArea.val() + '\nYour appended stuff');
答案 1 :(得分:7)
这花了我一段时间,但是下面的jQuery将完全按照您的意愿执行 - 它不仅会附加文本,还会通过存储它然后重置它来将光标保持在完全相同的位置:
var selectionStart = $('#your_textarea')[0].selectionStart;
var selectionEnd = $('#your_textarea')[0].selectionEnd;
$('#your_textarea').val($('#your_textarea').val() + 'The text you want to append');
$('#your_textarea')[0].selectionStart = selectionStart;
$('#your_textarea')[0].selectionEnd = selectionEnd;
你应该将它包装在一个函数中。
答案 2 :(得分:3)
您可以查看following answer,它提供了一个很好的插件,用于在<textarea>
的插入位置插入文字。
答案 3 :(得分:1)
你可以使用available caret plugins中的任何一个用于jQuery,基本上是:
如果你想在jQuery中使用“append”函数,那么很容易做到:
(function($){
$.fn.extend({
valAppend: function(text){
return this.each(function(i,e){
var $e = $(e);
$e.val($e.val() + text);
});
}
});
})(jQuery);
然后,您可以通过调用.valAppend()
来引用输入字段来use it。
答案 4 :(得分:1)
您可以使用我的Rangy inputs jQuery plugin,这适用于所有主流浏览器。
var $textarea = $("your_textarea_id");
var sel = $textarea.getSelection();
$textarea.insertText("\nSome text", sel.end).setSelection(sel.start, sel.end);