jQueryでtextareaの値を設定する


525

次のコードでjqueryを使用してtextareaフィールドに値を設定しようとしています:

$("textarea#ExampleMessage").attr("value", result.exampleMessage);

問題は、このコードが実行されると、textareaのテキストが変更されないことです。

しかしalert($("textarea#ExampleMessage").attr("value"))、新しく設定した値を実行すると返されますか?


3
jQueryマジックが<textarea>にval()を設定するように機能せず、IDでターゲティングしている場合、同じIDの要素が複数ある可能性があります。
billrichards

回答:


877

valを試しましたか?

$("textarea#ExampleMessage").val(result.exampleMessage);

5
valは、設定している値が文字列であることを確認するのに時間がかかりますが、attrは全体的にもう少し魔法をかけるようです。
enobrev 2009年

62
うん。textareaにはvalue属性がありませんが、入力にはあります。
MDCore 2009年

14
同意しましたが、このインスタンスではval()が設定しています。彼らは[jquery]でそれをtextareaタイプに決定し、テキストを設定する必要があります。
GONeale 2009年

17
textareaには、テキスト入力と同様に値(JavaScript)プロパティがあります。これは、HTMLの持っていないvalueの両方ので、属性は、それは問題ではないval()attr('value')JavaScriptのvalueプロパティへの書き込み。HTML属性を設定attr()ないことに注意してください!名前が異なるclass / classNameなどのケースの違いを隠そうとしている間、JavaScriptプロパティのみを設定します。ただし、フォーム要素のように、属性とプロパティが異なることをする場所の違いは依然としてわかります。
ボビンス2009

2
val(foo)私のために動作します(jQuery 1.9.1)。text(foo)losesを使用してtextareaコンテンツを更新すると、IEの改行がval(foo)保持されます。
Tim

77

Textareaにはvalue属性がありません。その値はタグの間にあります。つまり<textarea>my text</textarea>、入力フィールド(<input value="my text" />)とは異なります。それがattrが機能しない理由です:)


50

$("textarea#ExampleMessage").val() jqueryではただの魔法です。

内側のhtmlを使用して表示するtextareaタグは、 inputタグのようにvalue属性ではないことに注意してください。

<textarea>blah blah</textarea>
<input type="text" value="blah blah"/>

あなたは使うべきです

$("textarea#ExampleMessage").html(result.exampleMessage)

または

$("textarea#ExampleMessage").text(result.exampleMessage)

HTMLタグとして表示するか、プレーンテキストとして表示するかによって異なります。


1
正解です。textareaにはvalやvalueがありません。jqueryは、開発者の生活を楽にするための魔法をかけているだけです。
スコットカークウッド2010

16
それは魔法とは呼ばれず、抽象化と呼ばれています。textareaは1と0だけですが、コンピューターのすべての抽象化レイヤーはそれを隠します。指摘しても大丈夫ですが、そのような理由で他の回答に反対票を投じるように人々に求めないでください... :)
Espen Herseth Halvorsen

8
注意-html()はスクリプトタグを実行します。
リンカーンB

3
jQuery APIから".text()メソッドはフォーム入力またはスクリプトでは使用できません。入力またはtextarea要素のテキスト値を設定または取得するには、.val()メソッドを使用します。スクリプト要素の値を取得するには、 .html()メソッド。」
パイロット

20

男の子に来て!それだけで動作します

$('#your_textarea_id').val('some_value');

IDセレクターを使用する場合のみ。私はサードパーティが生成したコードなので、私はできません
Jack

16

これはうまくいくと思います:

$("textarea#ExampleMessage").val(result.exampleMessage);

10

同じ質問があったので、現在のブラウザーで試してみることにしました(この質問の後、1年半後です)。これは(.val)で機能します

$("textarea#ExampleMessage").val(result.exampleMessage); 

ために

  • IE8
  • FF 3.6
  • FF4
  • Opera 11
  • Chrome 10

1
記録のために、例外的なjQuery機能の1つは、ブラウザー互換性を提供する機能の1つ.val()です。そのため、複数のブラウザーで魔法をかける可能性が高いです;)
diosney

9

Android上.val.html動作しませんでした。

$('#id').text("some value")

仕事をしました。


1
jQuery APIから".text()メソッドはフォーム入力またはスクリプトでは使用できません。入力またはtextarea要素のテキスト値を設定または取得するには、.val()メソッドを使用します。スクリプト要素の値を取得するには、 .html()メソッド。」
パイロット

8

同じ問題があり、このソリューションは機能しませんでしたが、機能したのはhtmlを使用することでした

$('#your_textarea_id').html('some_value');

3
いいえ、html()textareaごとに1回だけ機能します。次回、のコンテンツを動的に変更したいのですがtextarea、機能しhtml()ません...
Legionar

@Legionarでは、このケースをどのように処理しますか?
Jawand Singh 2018

まあ、これは私に役立ちましたstackoverflow.com/questions/1219860/…これらの関数を使用して、textareaでエンコードされた値を設定しました$('#textarea').val(encodedtext);
Jawand Singh

5

そこで問題があります:与えられたdivの包含からhtmlコードを生成する必要があります。次に、この未加工のhtmlコードをtextareaに配置する必要があります。次のように関数$(textarea).val()を使用すると:

$(textarea).val( "<input type = 'text' value = ''のようないくつかのhtml style =" background:url( 'http://www.w.com/bg.gif')repeat-x center; "/> bla bla");

または

$( '#idTxtArGenHtml')。val($( 'idDivMain')。html());

クォートの間にある特殊文字(& '")に問題がありましたが、関数$(textarea).html()を使用すると、テキストは大丈夫です。

フォームの例があります:

<FORM id="idFormContact" name="nFormContact" action="send.php" method="post"  >
    <FIELDSET id="idFieldContact" class="CMainFieldset">
        <LEGEND>Test your newsletter&raquo; </LEGEND> 
        <p>Send to &agrave; : <input id='idInpMailList' type='text' value='youremail@gmail.com' /></p>
        <FIELDSET  class="CChildFieldset">
            <LEGEND>Subject</LEGEND>
            <LABEL for="idNomClient" class="CInfoLabel">Enter the subject: *&nbsp</LABEL><BR/>
          <INPUT value="" name="nSubject" type="text" id="idSubject" class="CFormInput" alt="Enter the Subject" ><BR/>
    </FIELDSET>
    <FIELDSET  class="CChildFieldset">
        <INPUT id="idBtnGen" type="button" value="Generate" onclick="onGenHtml();"/>&nbsp;&nbsp;
          <INPUT id="idBtnSend" type="button" value="Send" onclick="onSend();"/><BR/><BR/>
            <LEGEND>Message</LEGEND>
                <LABEL for="idTxtArGenHtml" class="CInfoLabel">Html code : *&nbsp</LABEL><BR/>
                <span><TEXTAREA  name="nTxtArGenHtml" id="idTxtArGenHtml" width='100%' cols="69" rows="300" alt="enter your message" ></TEXTAREA></span>
        </FIELDSET>
    </FIELDSET>
</FORM>

そして、textareaを埋めるように機能しないjavascript / jqueryコードは次のとおりです。

function onGenHtml(){
  $('#idTxtArGenHtml').html( $("#idDivMain").html()  );
}

最後にソリューション:

function onGenHtml(){
  $('#idTxtArGenHtml').html( $("#idDivMain").html() );
  $('#idTxtArGenHtml').parent().replaceWith( '<span>'+$('#idTxtArGenHtml').parent().html()+'</span>');
}

コツは、replaceWith関数を支援するために、textareaをspanタグでラップすることです。とてもきれいかどうかはわかりませんが、テキストエリアに未加工のhtmlコードを追加することもできます。


5

textareaは値を次のように保存しません

<textarea value="someString">

代わりに、次の形式で値を保存します。

<textarea>someString</textarea>

だからattr("value","someString")あなたはこの結果を得る:

<textarea value="someString">someOLDString</textarea>.

$("#textareaid").val()または$("#textareaid").innerHTML代わりにしてみてください。


5

テキスト領域に値がありません。この場合、jQuery .html()が機能します

$("textarea#ExampleMessage").html(result.exampleMessage);

2
いいえ、html()textareaごとに1回だけ機能します。次回、のコンテンツを動的に変更したいのですがtextarea、機能しhtml()ません...
Legionar

.empty()。html( 'newContent')@Legionarを実行した場合?
VH

3

それは私のために働きます...私はフェイスブックの壁を作りました...

これが私のコードの基礎です:

// SETS MY TEXT AREA TO EMPTY (NO VALUE)
$('textarea#message_wall').val('');

3

エンコードされたHTMLのtextarea値を設定するには(HTMLとして表示するため)を使用する必要があります.html( the_var )が、前述のようにもう一度設定すると、機能しない可能性があります(おそらく)。

これを修正するには、textarea .empty()を空にしてから再度設定します.html( the_var )

これが動作しているJSFiddleです:https ://jsfiddle.net/w7b1thgw/2/

jQuery(function($){
    
    $('.load_html').click(function(){
        var my_var = $(this).data('my_html');
        $('#dynamic_html').html( my_var ); 
    });
    
    $('#clear_html').click(function(){
        $('#dynamic_html').empty(); 
    });
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="dynamic_html"></textarea>
<a id="google_html" class="load_html" href="#" data-my_html="&lt;a href=&quot;google.com&quot;&gt;google.com&lt;/a&gt;">Google HTML</a>
<a id="yahoo_html" class="load_html" href="#" data-my_html="&lt;a href=&quot;yahoo.com&quot;&gt;yahoo.com&lt;/a&gt;">Yahoo HTML</a>
<a id="clear_html" href="#">Clear HTML</a>


2

私は試してみましたが.val() .text() .html()、jQueryを使用してtextareaの値を読み取ったり設定したりするためにいくつかのバグがありました...結局、ネイティブjsを使用しています

$('#message').blur(function() {    
    if (this.value == '') { this.value = msg_greeting; }
});



2

重要な側面が1つ欠けていると思います。

$('#some-text-area').val('test');

IDセレクター(#)がある場合にのみ機能します

クラスセレクターには、次のようなネイティブ値を使用するオプションがあります。

$('.some-text-area')[0].value = 'test';

1

受け入れられた回答は私にとってはうまくいきますが、ページの読み込みが完了した後にコードを実行する必要があることに気付いたときのみです。この状況では、インラインスクリプトは機能しませんでした。#my_formの読み込みがまだ完了していないためです。

$(document).ready(function() {
  $("#my_form textarea").val('');
});

、それは...常により良い受け入れ答えにコメントへの新しい答えを作成するよりもpdub23だ
ファビオ・バティスタ

1

以下のスニペットを使用することもできます。

$("textarea#ExampleMessage").append(result.exampleMessage);

1

ページにJQuery v1.4.4があった場合、どちらも機能しませんでした。JQuery v1.7.1を自分のページに挿入すると、ようやく動作しました。したがって、私の場合、問題を引き起こしていたのは私のJQueryバージョンでした。

id ==> textareaid

======================

var script1 = document.createElement("script");
script1.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";
document.body.appendChild(script1);

var script2 = document.createElement("script"); 
script2.type = "text/javascript"; 
script2.innerHTML = "var $jq171 = $.noConflict();"; 
document.body.appendChild(script2);

$jq171('#textareaid').val('xxx');

1

私は私のために$(textarea).val/html/text(any_str_var)働いたすべてを使いました。変数を文字列としてtextareaに確実に追加したい場合は、いつでも次のように連結できます。

$(textarea).val(unknown_var + '')

.val()メソッドは確実にtextareaで使用されます-https://api.jquery.com/val/を参照してください

.html()は、任意の要素のコンテンツを取得または設定するために使用できます。https//api.jquery.com/html/#html2を参照してください。

.text()は.htmlと同じですが、XMLコンテンツの設定に使用できる点が異なります。https://api.jquery.com/text/#text-textを参照してください。

また、各リンクを使用して、それぞれが特殊文字にどのように作用するかについても詳しく読むことができます。


0

このコードを使用するだけで、常に値が得られます。

var t = $(this); var v = t.val() || t.html() || t.text();

したがって、val()をチェックしてその値を設定します。val()が空の文字列、NULL、NaN osを取得した場合、html()をチェックしてから、text()をチェックします...


0

これは機能します:

var t = $('#taCommentSalesAdministration');
t.val('Hi');

ここで注意が必要なのは、正しいIDを使用することです。そして、IDを使用する前に、IDの#前に置いてください。


0

データベースのデータを使用しているときに問題が発生する可能性がある$("textarea#ExampleMessage").html('whatever you want to put here');ため、を使用することは良い方法.val()です。

例えば:

asという名前のデータベースフィールドにdescriptionは、次の値がありますasjkdfklasdjf sjklñadf。この場合、.val()を使用してtextareaに値を割り当てるのは、面倒な作業になる可能性があります。


0

JQueryを使用して値/テキスト/ htmlを設定しようとしましたが、成功しませんでした。だから私は以下を試しました。

この場合、DOMが作成された後に新しいtextarea要素を挿入していました。

 var valueToDisplay= 'Your text here even with line breaks';
 var textBox = '<textarea class="form-control" >'+ valueToDisplay +'</textarea>';
 $(td).html(textBox);

ここに画像の説明を入力してください

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