如何将文本附加到'<textarea>'?</textarea>

时间:2011-07-18 14:35:53

标签: javascript jquery textarea hyperlink add

我有<textarea>用户可以向世界输入他的信息!下面,有上传按钮...我想添加上传文件的链接(不用担心,我有它);就在他输入的文字旁边。

喜欢,他输入'Hello,world!',然后上传文件(通过AJAX完成),并在<textarea>内容的下一行添加该文件的链接。注意!是否可以将光标(他离开的位置)保持在同一个地方?

所有这些都可以通过jQuery完成......任何想法?我知道有方法'append()',但不会出现这种情况,对吗?

5 个答案:

答案 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,基本上是:

  1. 存储当前插入位置
  2. 将文本附加到textarea
  3. 使用插件替换插入位置

  4. 如果你想在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);