2012-01-13 9 views
95

私はjQueryを使用しており、val()またはtext()(または別のメソッド)を使用してテキストエリアの内容を読み込んで更新する必要があるかどうか疑問に思っています。textareaのval()とtext()の比較

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

+0

html()を試しましたか? – Znarkus

+0

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

+0

@Znarkus:いいえ... – Christophe

答えて

133

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

.text()は、内部で<textarea>の内容を取得するために(またはIEでは.innerText)メソッドを使用します。 text()の戻り値が間違っていることができ、一方

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は、常に、現在可視の値を示し、次のテストケースはtext().val()が互いにどのように関係するかを示しています。

+0

thx、これを今すぐ試してください。私は現在val()とtruncationで持っていた問題を再現することができません。たぶん私は間違った容疑者を持っています... – Christophe

+5

例のための束をありがとう。明らかにそれは私の問題でした。私はtext()で書き、val()で読みました。 – Christophe

+0

'text()'を使ってテキストエリアの値を変更すると、何かを手作業で変更した後でもう機能しません(文字の追加など) – Jan

-4

idの代わりに属性名で<textarea>を選択します。

<textarea id="message" name="message"></textarea> 
<script> 
    jQuery("textarea[name='message']").val(); 
</script> 
+15

これはどのようにして票を獲得しましたか?尋ねられた質問とはまったく無関係で、絶対に価値がない。セレクタでIDを使用する方がはるかに効率的であり、同じ名前の複数のテキストエリアを選択しないため、ガイダンスは貧弱です。 – michael

6

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

.text()時々動作し、別の時間に失敗します。

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

関連する問題