работает отлично.

ите следующую страницу:

<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>

Поведение, которого я ожидаю, и которого я хочу достичь, заключается в том, что когда я нажимаю на одну издивы с классомhashtag их содержимое ("#one" и "#two" соответственно) будет добавлено в конце текста вTextArea text-box.

Это происходит, когда я нажимаю на хэш-теги сразу после загрузки страницы. Однако, когда я тогда также начинаю редактировать текст вtext-box вручную, а затем вернитесь к щелчку по любому из хэштегов, которые они не добавляют в Firefox. В Chrome происходит самое странное - весь текст, который я набираю вручную, заменяется новым хэштегом и исчезает.


Вероятно, я здесь что-то делаю очень неправильно, поэтому я был бы признателен, если бы кто-то мог указать на мою ошибку здесь и как это исправить.

Благодарю.

Ответы на вопрос(4)

Решение Вопроса

Первый,<textarea/> недопустимый тег<textarea> теги должны быть полностью закрыты с полным</textarea> закрывающий тег

Во-вторых,$(textarea).append(txt) не работает, как вы думаете. Когда страница загружается, текстовые узлы внутри текстовой области устанавливаются в значение этого поля формы. После этого текстовые узлы и значения могут быть отключены. По мере ввода в поле значение изменяется, но текстовые узлы внутри него в DOM не изменяются. Затем вы изменяете текстовые узлы с помощью append (), и браузер стирает значение, потому что он знает, что текстовые узлы внутри тега изменились.

Итак, вы хотите установить значение, вы не хотите добавлять. Для этого используйте метод val () jQuery.

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

Рабочий пример:http://jsfiddle.net/Hhptn/

 Harpreet Bhatia31 дек. 2011 г., 07:07
спасибо, вот что я хотел понять

Используйте функцию val () :)

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
    </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"></textarea>
            <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").val($("#text-box").val() + txt);
  });
});
        </script>
    </body>
</html>

Это помогает?

Кажется, что добавление не работает, потому что значение текстовой области состоит из дочернего узла, но, рассматривая его как несколько отдельных узлов, экран не будет обновляться, согласно моей Firebug. Firebug покажет мне обновленные дочерние узлы, но НЕ текст, который я набрал вручную в текстовой области, тогда как на экране отображается текст, введенный вручную, но не новые узлы.

Вы можете ссылаться по значению 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();

Ваш ответ на вопрос