如何将文字追加到”?
我有 ,用户可以在这里向世界输入他的信息! 下面,有上传按钮…我想添加上传文件的链接(不用担心,我有它); 就在他输入的文字旁边。
比如,他输入’Hello,world!’,然后上传文件(通过AJAX完成),并在下一行添加到内容的链接到该文件。 注意! 是否可以将光标(他离开的位置)保持在同一个地方?
所有这些都可以用jQuery完成……有什么想法吗? 我知道有方法’append()’,但不会出现这种情况,对吧?
尝试
var myTextArea = $('#myTextarea'); myTextArea.val(myTextArea.val() + '\nYour appended stuff');
这花了我一段时间,但是下面的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;
你应该将它包装在一个函数中。
您可以查看以下答案 ,该答案提供了一个很好的插件,用于在中的插入位置插入文本。
您可以使用jQuery的任何可用插入符插件 ,基本上:
- 存储当前的插入位置
- 将文本附加到textarea
- 使用插件替换插入位置
如果你想在jQuery中使用“append”函数,那么很容易做到:
(function($){ $.fn.extend({ valAppend: function(text){ return this.each(function(i,e){ var $e = $(e); $e.val($e.val() + text); }); } }); })(jQuery);
然后,您可以通过调用.valAppend()
引用输入字段来使用它 。
您可以使用我的Rangy输入jQuery插件 ,适用于所有主流浏览器。
var $textarea = $("your_textarea_id"); var sel = $textarea.getSelection(); $textarea.insertText("\nSome text", sel.end).setSelection(sel.start, sel.end);