Textarea: elem.val() vs elem.text()

Это очень странно. По-видимому, я могу использовать как .val(), так и .text(), чтобы манипулировать текстом textarea.

Но после того, как я использую .val для изменения текста, я больше не могу использовать .text. Обратное неверно.

Это приводит к некоторым фанки-ошибкам. Причина в том, что плагин, который я использую, может использовать .val для управления текстом.

Может ли кто-нибудь объяснить, как это работает? Благодарю!

Ответ 1

Вы должны использовать свойство val() или (лучше) value для текстового поля. text() работает изначально потому, что начальное значение textarea определяется текстом node (если есть), который он содержит. Вы даже можете изначально изменить свойство nodeValue или data этого текста node, и оно обновит значение textarea. Однако, как только пользователь изменил значение textarea или script изменил свойство value в textarea, текст node вышел из изображения и больше не привязан к значению textarea в любым способом.

Ответ 2

Функция .val() получает атрибут "значение" элемента <textarea>, а .text() получает содержимое текстовых узлов (node тип 3) в элементе. Я бы сказал, что если настройка .text() работает вообще, это не очень хорошая идея, поскольку она по сути обманывает основные базовые блоки материи. Это может привести к ошибке, сбою браузера или разрушительному взрыву.

Используйте .val().

edit — .text() работает до той точки, в которой пользователь взаимодействует с элементом <textarea>, или код JavaScript устанавливает свойство value. После этой точки содержание DOM элемента становится неуместным. Вы все равно можете получить его, но он не будет отражать фактическое состояние элемента.

Ответ 3

Звучит странно, но на более низком уровне .val() - это то, что я ожидаю работать, поскольку .value - это способ доступа к содержимому элементов формы. Почему .text() работает в некоторых случаях бьет меня

Ответ 4

Требуется с типом Node .text() извлекает...

.text() получает innerText (не HTML) всех согласованных элементов, а .val() извлекает значения из входных элементов...