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