Как сихронизировать содержимое input и p?

Есть просто поле и простой параграф . Как сделать, чтобы содержимое поля автоматом копировалось в абзац? Какие jq-методы подойдут?

Причем, если поле уже чем-то заполнено по умолчанию, то этот текст уже должен быть транслирован в параграф. Так-что ввод с клавиатуры отслеживать не подходит.
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Причем, если поле уже чем-то уже заполнено по умолчанию, то этот текст уже должен быть транслирован в параграф. Так-что ввод с клавиатуры отслеживать не подходит.

Подходит. Достаточно сразу после назначении обработчика сгенерировать событие самостоятельно - текст скопируется:

$('input').on('input', function() {
  $('p').text($(this).val());
}).trigger('input');

// или

const input = document.querySelector('input');
const p = document.querySelector('p');
input.addEventListener('input', e => p.textContent = e.target.value);
input.dispatchEvent(new Event('input'));

UPD. Вынесено из комментариев:

что делать, если параграф содержит текст по умолчанию, который должен отображаться пока в поле ввода не начали что-то вводить?

Проще говоря, когда инпут пустой, надо отображать текст параграфа.

Текст по умолчанию засунуть в data-атрибут: <p data-default-text="Текст по умолчанию"></p>.

Если инпут пустой, хватаем значение этого атрибута:

$('p').text($(this).val() || $('p').data('default-text'));

// или

p.textContent = e.target.value || p.dataset.defaultText
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы