val () против text () для textarea - PullRequest
104 голосов
/ 13 января 2012

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

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

Ответы [ 2 ]

145 голосов
/ 13 января 2012

Лучший способ установить / получить значение текстовой области - это метод .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() может быть неправильным.

10 голосов
/ 10 апреля 2014

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...