使用jquery将文本添加到textarea问题

时间:2013-11-05 10:32:31

标签: jquery checkbox textarea

在尝试使用Jquery做简单的事情时,我有时会感到非常沮丧。 我有一个textarea,用户可以编写自己的东西,但也可以从一些预定义的短语中选择并添加它们

所以html看起来像

<textarea id="id_text"></textarea>
<div id="predef-phrases>
    <input type="checkbox"><label>checkbox1</label> 
    <input type="checkbox"><label>checkbox2</label>
    <input type="checkbox"><label>checkbox3</label>
    <input type="checkbox"><label>checkbox4</label>     
</div>
<input type="button" id="add" name="add" value="Add phrases" />

和jquery是这样的:

$(document).read(function(){
      $("#add").click(function(){
        $("#predef-phrases input[type=checkbox").each(function(i, checkbox){
            if($(checkbox).is(":checked")){
                text_value = $("#id_text").val();
                checkbox_text = $(checkbox).next('label').text();
                $("#id_text").append(checkbox_text+'\n');

            }
        });
    });
});

一切正常,直到用户输入一些文字。然后,当用户按下添加按钮时,预定义短语不会附加在textarea中。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

请勿使用append,这只会更改“初始”值,但会直接更改值:

$("#id_text")[0].value += checkbox_text+'\n';

如果您愿意,也可以使用val功能:

$("#id_text").val(function(_,text){ return text+checkbox_text+'\n'});

但是你的HTML(缺少结束语)和你的选择器(缺少右括号)也有错误。 Here's a fixed code

答案 1 :(得分:0)

你不应该对textarea使用append()。相反,您可以尝试以下方法:

$("#id_text").val($("#id_text").val() + '\n' + checkbox_text);