#jquery #textarea #placeholder
#jquery #текстовая область #плейсхолдер
Вопрос:
Прежде всего, что у меня есть: простой div, который по щелчку переключается на текстовую область. Заполнителем текстовой области является значение, которое div имел раньше.
<div class="class" id="test">Test</div>
text = $('#test').text();
$('#test').replaceWith('<textarea onkeyup="update_textarea(this)"
id="test" placeholder="' text '" />');
Функция updateTextarea делает вновь вставленный текст доступным в качестве значения (означает, что я могу использовать вставленный текст позже снова).
Теперь, чего мне не хватает или чего я хочу: когда я нажимаю на свой div с помощью value Test, он будет доступен для редактирования (потому что это больше не div, это текстовая область). Проблема в том, что заполнитель правильный, но когда я щелкаю внутри текстовой области, чтобы вставить новый текст, заполнитель удаляется, текстовая область пуста. Как я мог предотвратить это, сохранив заполнитель в качестве значения в текстовой области?
Должно быть что-то с onFocus, я думаю… но как его сохранить.
Спасибо
Комментарии:
1. вот как
placeholder
должно работать это визуальное приглашение, которое удаляется, когда пользователь переходит к полю. Если вы хотите, чтобы в поле было редактируемое значение, вместо этого используйтеvalue
атрибут.
Ответ №1:
Может быть, это поможет вам. Добавьте это после $('#test').replace...
$('#test').one('focus',function(){
$(this).text(text)
})
проверьте здесь http://jsfiddle.net/a8AA5 /
Ответ №2:
Атрибут заполнителя предназначен для исчезновения, как только пользователь вводит текст в input
, поэтому в этом случае он работает так, как задумано. Я подозреваю, что вместо этого вы хотите применить текст к textarea
элементу; и для этого я бы предложил следующее:
$('#test').live('click',
function(){
$(this).replaceWith('<textarea>' $(this).text() '</textarea>');
});
$('textarea').live('blur',
function(){
$(this).replaceWith('<div id="test" class="class">' $(this).text() '</div>');
});
Ссылки:
live()
.replaceWith()
.text()
.
Ответ №3:
Проверьте это
$("#test").live('click',function(){
var text = $('#test').text();
//var text = $('#test').html(); // use this for html tags also
$('#test').replaceWith('<textarea id="test2">' text '</textarea>');
})
$("#test2").live('blur',function(){
var text2 = $('#test2').val();
$(this).replaceWith('<div id="test">' text2 '</div>');
});
<div id="test">Test</div>
Проверьте в jsFiddle
http://jsfiddle.net/VbSV5/