val () порівняно з текстом () для textarea


106

Я використовую jQuery і цікавлюсь, чи слід використовувати val () або text () (або інший метод) для читання та оновлення вмісту текстової області.

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


що означає розрив рядків не працює?
каз

@kaz: текст залишається в одному рядку.
Крістоф

І що ви маєте на увазі під "врізаним текстом" - у вивідці на консолі? У самому поверненому значенні? Було б простіше, якби ви надали jsfiddle ...
Константин Грос

@Connum: у зворотному значенні. Спробуйте jsfiddle зараз ...
Крістоф

1
Я потрапив сюди google'ing для усіченого тексту textarea. Я вирішив свою проблему, додавши пару \ 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 повертається значення може бути неправильним.


THX, спробую це зараз. Наразі я не в змозі повторити проблему, що виникала з val () та усіченням. Можливо, я зрозумів неправильного підозрюваного ...
Крістоф

5
Дякую купу за приклади. Мабуть, це було моєю проблемою, я писав з текстом () і читав з val ().
Крістоф

Зміна значення текстової області за допомогою text()НЕ працює більше після того, як вручну нічого змінити в ній (наприклад, додавання символу)
січня

12

.val()завжди працює з textareaелементами.

.text()працює іноді і виходить з ладу в інші часи! Це не надійно (тестовано в Chrome 33)

Що найкраще, це те, що .val()без проблем працює і з іншими елементами форми (як input), тоді як .text()не вдається.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.