使用jQuery将文本插入文本区域

使用jQuery将文本插入文本区域,jquery,Jquery,我有一个textarea和它之外的几个变量的列表。我需要能够点击一个变量并将其放入文本区域 <div id="var1" class="insert">Name</div> <div id="var2" class="insert">Street address</div> <textarea id="targetText">some text already here</textarea> 试试这个: $(".inse

我有一个textarea和它之外的几个变量的列表。我需要能够点击一个变量并将其放入文本区域

<div id="var1" class="insert">Name</div>
<div id="var2" class="insert">Street address</div>

<textarea id="targetText">some text already here</textarea>
试试这个:

$(".insert").click(function () {
    var insertText = $(this).text();
       $('#targetText').append(" "+insertText);
});
演示:


感受神奇。

如果您想在光标处插入变量,您需要使用selectionStart,如下所示:

$('.insert').click(function(e){
    var tav    = $('#targetText').val(),
        strPos = $('#targetText')[0].selectionStart;
        front  = (tav).substring(0,strPos),
        back   = (tav).substring(strPos,tav.length); 

    $('#targetText').val(front + '{' + $(this).text() + '}' + back);
});
参见小提琴:


注意:这可能不会像IE中那样工作。

完美!和往常一样,JSFIDLE链接的值为+1。
$(".insert").click(function () {
    var insertText = $(this).text();
       $('#targetText').append(" "+insertText);
});
$("#targetText").val($("#targetText").val() + "{" + $(this).text() + "}");
$('.insert').click(function(e){
    var tav    = $('#targetText').val(),
        strPos = $('#targetText')[0].selectionStart;
        front  = (tav).substring(0,strPos),
        back   = (tav).substring(strPos,tav.length); 

    $('#targetText').val(front + '{' + $(this).text() + '}' + back);
});