я не могу установить текстовое поле пустым

#jquery

#jquery

Вопрос:

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

 $('.tooltiptext .emoticon').click(function() {
      $in = $(this);
      console.log($in);
      setTimeout(function() {
          var dataText = $("#text").val();
          $('#text').append(dataText   $.emoticons.replace($in.html()));
          var dataCode = $in.context.innerText;
          console.log(dataCode);
          var dataTextArea = $("textarea").val();
          console.log(dataTextArea   dataCode);
          //$('#textarea').html('');
          $('#textarea').empty();// it not working
          console.log($('#textarea').val());
          $('#textarea').append(dataTextArea   dataCode   ' ');

      }, 100);

  });

  $('textarea').on('keypress', function(e) {

      if (e.which == 32 || e.which == 8) {
          $in = $(this);
          setTimeout(function() {
              $("#text").html($.emoticons.replace($in.val()));
          }, 100);
      }

  });
  

Ответ №1:

Используйте val() , не text() , html() или empty() , чтобы очистить значение textarea :

 $('#textarea').val('');
  

Аналогично, используйте его для установки значения, а не append() :

 $('#textarea').val(dataTextArea   dataCode   ' ');
  

То же самое относится и к вашему #text элементу — при условии, что это input or textarea . Упрощенная версия вашего кода будет такой:

 $('.tooltiptext .emoticon').click(function() {
    $in = $(this);

    setTimeout(function() {
        $('#text').val(function(i, v) {
            return v   $.emoticons.replace($in.html());
        });

        $('#textarea').val(function(i, v) {
            return v   $in.context.innerText   ' ';
        });
    }, 100);
});
  

Комментарии:

1. Потому что вы устанавливаете value свойство базового элемента. append() используется для создания совершенно нового элемента в DOM.