Val() против text() для textarea
Я использую jQuery и задаюсь вопросом, следует ли использовать val() или text() (или другой метод) для чтения и обновления содержимого текстового поля.
Я пробовал оба, и у меня были проблемы с обоими. Когда я использую text() для обновления textarea, разрывы строк (\n) не работают. Когда я использую val() для извлечения содержимого textarea, текст усекается, если он слишком длинный.
Ответы
Ответ 1
Лучший способ установить/получить значение текстового поля - это метод .val()
, .value
.
.text()
внутренне использует метод .textContent
(или .innerText
для IE) для получения содержимого <textarea>
. Следующие тестовые примеры иллюстрируют, как text()
и .val()
относятся друг к другу:
var t = '<textarea>';
console.log($(t).text('test').val()); // Prints test
console.log($(t).val('too').text('test').val()); // Prints too
console.log($(t).val('too').text()); // Prints nothing
console.log($(t).text('test').val('too').val()); // Prints too
console.log($(t).text('test').val('too').text()); // Prints test
Свойство value
, используемое .val()
, всегда показывает текущее видимое значение, тогда как значение text()
может быть неправильным.
Ответ 2
.val()
всегда работает с элементами textarea
.
.text()
работает иногда и не работает в другое время! Он не надежен (проверен в Chrome 33)
Чем лучше .val()
работает без проблем с другими элементами формы (например, input
), тогда как .text()
не работает.
Ответ 3
Выберите <textarea>
по имени атрибута вместо id.
<textarea id="message" name="message"></textarea>
<script>
jQuery("textarea[name='message']").val();
</script>