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()не работают .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.