web-dev-qa-db-ja.com

textareaのval()とtext()

私はjQueryを使用していますが、val()またはtext()(または別のメソッド)を使用してtextareaのコンテンツを読み取り、更新する必要があるかどうか疑問に思っています。

私は両方を試しましたが、両方に問題がありました。 text()を使用してtextareaを更新すると、改行(\ n)が機能しません。 val()を使用してtextareaのコンテンツを取得する場合、長すぎるテキストは切り捨てられます。

104
Christophe

テキストエリアの値を設定/取得する最良の方法は、.val().valueメソッドです。

.text()は、.textContent(またはIEの場合は.innerText)メソッドを内部的に使用して、<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

.val()が使用するvaluepropertyは常に現在の表示値を示しますが、text()の戻り値は間違っている可能性があります。

145
Rob W

.val()は常にtextarea要素で機能します。

.text()は時々機能し、他の場合は失敗します!信頼性がありません(Chrome 33でテスト済み)

.val()は失敗しますが、.text()は他のフォーム要素(inputなど)とシームレスに機能します。

10