val () против text () для textarea

Я использую jQuery и задаюсь вопросом, должен ли я использовать val() или text() (или другой метод) для чтения и обновления содержимого textarea.

Я пробовал оба, и у меня были проблемы с обоими. Когда я использую text() для обновления textarea, разрывы строк (n) не работают. Когда я использую val () для извлечения содержимого textarea, текст усекается, если он слишком длинный.

3 ответов


лучший способ установить / получить значение textarea является .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() всегда показывает текущее значение visible, тогда как text()возвращаемое значение может быть неправильным.


.val() всегда работает с textarea элементы.

.text() работает иногда и терпит неудачу в другое время! Это не надежно (протестировано в Chrome 33)

что лучше, что .val() тесно взаимодействует с другими элементами формы (например,input), а .text() не удается.


выберите <textarea> по имени атрибута вместо id.

<textarea id="message" name="message"></textarea>
<script>
  jQuery("textarea[name='message']").val();
</script>