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>