Javascript jQuery.append()在编辑文本后不追加到textarea

Javascript jQuery.append()在编辑文本后不追加到textarea,javascript,jquery,Javascript,Jquery,请看下一页: <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"/> </head> <body> <div class="hashtag">#one</div> <div class="hashtag"&

请看下一页:

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"/>
</head>
<body>
    <div class="hashtag">#one</div>
    <div class="hashtag">#two</div>
    <form accept-charset="UTF-8" action="/home/index" method="post">
        <textarea id="text-box"/>
        <input type="submit" value ="ok" id="go" />
    </form>

    <script type="text/javascript">
        $(document).ready(function() {

            $(".hashtag").click(function() {
                var txt = $.trim($(this).text());
                $("#text-box").append(txt);
            });

        });
    </script>
</body>
</html>

#一个
#两个
$(文档).ready(函数(){
$(“.hashtag”)。单击(函数(){
var txt=$.trim($(this.text());
$(“#文本框”).append(txt);
});
});
我所期望的行为,也是我想要实现的行为是,当我用class
hashtag
单击其中一个div时,它们的内容(“一”和“#二”)将分别附加在textarea
文本框的文本末尾

当我在页面加载后点击散列标签时,就会发生这种情况。然而,当我开始手动编辑
文本框中的文本,然后返回到点击Firefox上没有附加的任何标签时。在Chrome上,最奇怪的事情正在发生——我手动键入的所有文本都被新的标签替换,然后消失


我可能在这里做了一些非常错误的事情,所以如果有人能在这里指出我的错误,以及如何纠正,我将不胜感激

谢谢。

使用val()函数:)


#一个
#两个
$(文档).ready(函数(){
$(“.hashtag”)。单击(函数(){
var txt=$.trim($(this.text());
$(“#文本框”).val($(“#文本框”).val()+txt);
});
});
这有用吗

append似乎不起作用的原因是textarea的值由子节点组成,但根据我的Firebug,将其视为多个单独的节点,屏幕不会更新。Firebug将向我显示更新的子节点,但不是我在文本区域中手动键入的文本,而屏幕将向我显示手动键入的文本,但不是新节点。

2件事

首先,
不是有效的标记<代码>
标记必须使用完整的
关闭标记完全关闭

其次,
$(textarea).append(txt)
的工作方式与您想象的不一样。加载页面时,textarea内的文本节点将设置该表单字段的值。之后,可以断开文本节点和值的连接。在字段中键入时,值会更改,但DOM中的文本节点不会更改。然后使用append()更改文本节点,浏览器会删除该值,因为它知道标记内的文本节点已更改

因此,如果要设置该值,则不需要追加。为此使用jQuery的val()方法

$(document).ready(function(){
  $(".hashtag").click(function(){
    var txt = $.trim($(this).text());
    var box = $("#text-box");
    box.val(box.val() + txt);
  });
});
工作示例:

您可以通过textarea的值进行引用

$(document).ready(function () {
     window.document.getElementById("ELEMENT_ID").value = "VALUE";
});

function GetValueAfterChange()
{
   var data = document.getElementById("ELEMENT_ID").value;
}
很好

if(data.quote) $('textarea#message').val($('textarea#message').val()+data.message +' ').focus();
if(data.quote) $('textarea#message').val($('textarea#message').val()+data.message +' ').focus();