在尝试使用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中。我错过了什么吗?
答案 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);