val () против text () для текстового поля

107

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

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

Кристоф
источник
что это значит, что разрывы строк не работают?
kaz
@kaz: текст остается на той же строке.
Christophe
И что вы подразумеваете под «текст усечен» в отладочном выводе консоли? В самом возвращаемом значении? Было бы проще, если бы вы предоставили jsfiddle ...
Константин Гросс,
@Connum: в возвращаемом значении. Пробую jsfiddle прямо сейчас ...
Кристоф
1
Я получил здесь с помощью google'ing для усеченного текста текстового поля. Я исправил свою проблему, добавив пару \ n \ n в конец .val (). Странно, но это сработало.
Дарин

Ответы:

148

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

Роб В
источник
спасибо, пробую прямо сейчас. В настоящее время я не могу воспроизвести проблему с val () и усечением. Может, я ошибся подозреваемым ...
Кристоф
5
Большое спасибо за примеры. Видимо, это была моя проблема, я писал с помощью text () и читал с помощью val ().
Christophe
Изменение значения в текстовое поле с помощью text()больше не работает после изменения вручную , ничего в ней (например , добавление символа)
Jan
12

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

.text()иногда работает, а иногда не работает! Это ненадежно (проверено в Chrome 33)

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

Кшитий Саксена -KJ-
источник