textareaのval()とtext()


106

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

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


改行が機能しないとはどういう意味ですか?
kaz

@kaz:テキストは同じ行にとどまります。
クリストフ

そして、「テキストが切り捨てられる」とはどういう意味ですか-コンソールのデバッグ出力では?戻り値自体に?jsfiddleを提供した方が簡単でしょう...
ConstantinGroßJan

@Connum:戻り値。jsfiddleを今すぐ試します...
クリストフ

1
切り捨てられたtextareaテキストをグーグル検索してここに来ました。.val()の最後にいくつかの\ n \ nを追加して問題を修正しました。奇妙ですが、うまくいきました。
Darin

回答:


148

textareaの値を設定/取得する最良の方法は.val().valueメソッドです。

.text()内部で.textContent(または.innerTextIE用に)メソッドを使用して、のコンテンツを取得し<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()の戻り値が間違っていることができます。


thx、これを今すぐ試します。現在、val()と切り捨てで発生した問題を再現できません。多分私は間違った容疑者を得た...
クリストフ

5
例をたくさんありがとう。どうやらそれが私の問題だったので、text()で書き込み、val()で読み取りました。
クリストフ

を使用text()してtextareaの値を変更しても、手動で何かを変更した後(たとえば、文字を追加した後)機能しません
Jan

12

.val()常にtextarea要素で動作します。

.text()時々動作し、他の時に失敗します!信頼できない(Chrome 33でテスト済み)

何が最善かと言うと.val()、他のフォーム要素(などinput)とシームレスに動作し、.text()失敗するということです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.