Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在使用jQuery函数append插入文本时textarea会冻结_Javascript_Jquery_Append - Fatal编程技术网

Javascript 为什么在使用jQuery函数append插入文本时textarea会冻结

Javascript 为什么在使用jQuery函数append插入文本时textarea会冻结,javascript,jquery,append,Javascript,Jquery,Append,我正在尝试从下拉列表(#note#u template)在文本区域(#note#u text)中插入内容。用户应该能够使用键盘在输入字符之间的文本区域中插入大量项目。类似于从要放在消息中的表情符号集合中进行选择 按以下方式完成后,文本区域可以在键入后接收项目 function update1() { $txt = $("#note_text").val() + $("#note_template option:selected").val() ; $("#note_text").

我正在尝试从下拉列表(
#note#u template
)在文本区域(
#note#u text
)中插入内容。用户应该能够使用键盘在输入字符之间的文本区域中插入大量项目。类似于从要放在消息中的表情符号集合中进行选择

按以下方式完成后,文本区域可以在键入后接收项目

function update1() {
    $txt = $("#note_text").val() + $("#note_template option:selected").val() ;
    $("#note_text").val($txt);
$("#note_template").val("");
}
但是,如果按以下方式执行,文本区域的内容在键入后不会更新。只有在键入之前,我才能从下拉列表中插入项目

function noteTempalteSelected() {
    $("#note_text").append( $("#note_template option:selected").val() );
    $("#note_template").val("");
}

因此,使用
append
似乎会导致文本区域冻结有人能解释一下原因吗?谢谢。

好的,我想我知道这里发生了什么。为了使append正常工作,元素应该在jquery中具有innerHTML属性或html()。Textarea就像输入有一个val()属性一样。因此,要使其正常工作,您应该尝试以下方法:

 $('#note_template').on('click', 'option:selected', function(e){
   var txtArea = $('#note_text');
   txtArea.val(txtArea.val() + $(this).val());
   $(this).val(''); 
 });

美元(“#注释文字”)触发什么(“键控”);假设在这里,我放置了一个keyup处理程序来计算并显示写入文本区域的字符数。需要触发来更新该值。刚刚在没有触发keyup的情况下进行了测试,问题仍然存在。我猜第二种方法不起作用,因为:您不想在textarea中“附加”,而是想添加到textarea的-value-中。换句话说,如果您附加到一个或任何其他元素,而该元素实际上并没有围绕HTML进行包装,我也会遇到同样的问题。我在寻找一个解释,为什么一个代码片段有效,而另一个会冻结文本区域。是的,这也会冻结。嘿,Alex,这一个有效。但是我已经知道了,请看我发布的第一个代码。我在寻找一个解释,为什么当附加冻结时,这会起作用。谢谢你的努力,我明白你的意思。但是,您如何解释我可以在键入之前插入项目这一事实呢。假设我在下拉列表中的项目是“:”和“:”,我可以在开始键入之前插入一些微笑。然后我键入一个字符“a”。因此,现在我有了“:)a”。现在我无法再从下拉列表中插入任何内容。请在我的演示示例中尝试。它在那里工作。但是,由于$(this).val('')的原因,您不能插入同一项两次;如果希望能够插入同一项两次,则应删除此行。