私はjQueryを使用していますが、val()またはtext()(または別のメソッド)を使用してtextareaのコンテンツを読み取り、更新する必要があるかどうか疑問に思っています。
私は両方を試しましたが、両方に問題がありました。 text()を使用してtextareaを更新すると、改行(\ n)が機能しません。 val()を使用してtextareaのコンテンツを取得する場合、長すぎるテキストは切り捨てられます。
テキストエリアの値を設定/取得する最良の方法は、.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()
が使用するvalue
propertyは常に現在の表示値を示しますが、text()
の戻り値は間違っている可能性があります。
.val()
は常にtextarea
要素で機能します。
.text()
は時々機能し、他の場合は失敗します!信頼性がありません(Chrome 33でテスト済み)
.val()
は失敗しますが、.text()
は他のフォーム要素(input
など)とシームレスに機能します。