it-swarm.com.de

Stellen Sie den Wert des Textbereichs in jQuery ein

Ich versuche mit jquery einen Wert in ein Textfeld zu setzen:

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

Das Problem ist, dass, sobald dieser Code ausgeführt wird, der Text im Textbereich nicht geändert wird.

Wenn Sie jedoch eine alert($("textarea#ExampleMessage").attr("value")) ausführen, wird der neu eingestellte Wert zurückgegeben.

498
GONeale

Hast du es mit val versucht?

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

Textarea hat kein Wertattribut, sein Wert liegt zwischen Tags, d. H .: <textarea>my text</textarea>, es entspricht nicht dem Eingabefeld (<input value="my text" />). Deshalb funktioniert attr nicht :)

73
danivalentin

$("textarea#ExampleMessage").val() in jquery nur eine Magie.

Sie sollten bemerken, dass textarea das Tag inneres HTML zum Anzeigen verwendet und nicht im Wertattribut genau wie das Eingabe-Tag.

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

Du solltest benutzen

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

oder

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

hängt davon ab, ob Sie es als HTML-Tags oder als Nur-Text anzeigen möchten.

46
CallMeLaNN

Oh, komm schon Jungs! es funktioniert nur mit

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

Ich denke das sollte funktionieren:

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

ich hatte die gleiche Frage, also habe ich mich entschlossen, sie in den aktuellen Browsern zu testen (wir sind eineinhalb Jahre später nach dieser Frage), und diese (.val) funktioniert

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

for

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

Auf Android .val und .html hat nicht funktioniert.

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

hat den Job gemacht.

8
Dan Ochiana

Ich hatte das gleiche Problem und diese Lösung funktionierte nicht, aber es funktionierte, HTML zu verwenden

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

textarea speichert keine Werte als

<textarea value="someString">

stattdessen werden Werte in folgendem Format gespeichert:

<textarea>someString</textarea>

Mit attr("value","someString") erhalten Sie das folgende Ergebnis:

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

versuchen Sie stattdessen $("#textareaid").val() oder $("#textareaid").innerHTML.

5
Luka Ramishvili

Textarea hat keinen Wert. jQuery .html () funktioniert in diesem Fall

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

Dort das Problem: Ich muss HTML-Code aus dem Inhalt eines gegebenen div generieren. Dann muss ich diesen rohen HTML-Code in ein Textfeld einfügen. Wenn ich die Funktion $ (textarea) .val () so benutze:

$ (textarea) .val ("einige HTML-Dateien wie <input type = 'text' value = '' style =") background: url ('http://www.w.com/bg.gif') repeat-x center; "/> bla bla");

oder

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

Ich hatte ein Problem mit einem Sonderzeichen (& '"), wenn sie zwischen" "und" "stehen. Wenn ich jedoch die Funktion" $ (textarea) .html () "verwende, ist der Text in Ordnung.

Es gibt ein Beispielformular:

<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='[email protected]' /></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>

Und Javascript/JQuery-Code, der nicht funktioniert, um das Textfeld auszufüllen, ist:

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

Endlich die Lösung:

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

Der Trick besteht darin, Ihren Textbereich mit einem span-Tag zu versehen, um die replaceWith-Funktion zu unterstützen. Ich bin nicht sicher, ob es sehr sauber ist, aber es funktioniert auch perfekt. Fügen Sie rohen HTML-Code in ein Textfeld ein.

5
Mathieua

Es funktioniert für mich .... Ich habe eine Pinnwand gebaut ...

Hier ist die Basis meines Codes:

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

Um den Textbereichswert von codiertem HTML festzulegen (um als HTML anzuzeigen), sollten Sie .html( the_var ) verwenden, aber wie erwähnt, wenn Sie versuchen, ihn erneut festzulegen, funktioniert er möglicherweise (und wahrscheinlich) nicht.

Sie können dies beheben, indem Sie den Textbereich .empty() leeren und ihn dann mit .html( the_var ) erneut einstellen.

Hier ist eine funktionierende 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>
3
sMyles

Wir können entweder die Methoden .val () oder .text () verwenden, um Werte festzulegen. Wir müssen den Wert in val () wie val ("hallo") setzen.

  $(document).ready(function () {
    $("#submitbtn").click(function () {
      var inputVal = $("#inputText").val();
      $("#txtMessage").val(inputVal);
    });
  });

Überprüfen Sie das Beispiel hier: http://www.codegateway.com/2012/03/set-value-to-textarea-jquery.html

2
Avinash

Ich habe es mit .val().text().html() versucht und hatte einige Fehler beim Lesen oder Festlegen des Werts eines Textbereichs mit jQuery ... ich endete mit nativen js

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

Verwenden Sie einfach die Textarea-ID nach Typ:

$("textarea#samplID").val()

Die akzeptierte Antwort funktioniert für mich, aber erst nachdem mir klar wurde, dass ich meinen Code ausführen musste, nachdem die Seite vollständig geladen wurde. In dieser Situation hat das Inline-Skript vermutlich nicht funktioniert, da #my_form noch nicht vollständig geladen wurde.

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

Sie können auch das folgende Snippet verwenden.

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

Als ich JQuery v1.4.4 auf der Seite hatte, funktionierte keines davon. Beim Einfügen von JQuery v1.7.1 in meine Seite hat es endlich funktioniert. In meinem Fall war es also meine JQuery-Version, die das Problem verursachte.

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
MacGyver

Die Verwendung von $("textarea#ExampleMessage").html('whatever you want to put here'); kann eine gute Möglichkeit sein, da .val() Probleme haben kann, wenn Sie Daten aus der Datenbank verwenden.

Zum Beispiel:

Ein Datenbankfeld mit dem Namen description hat den folgenden Wert asjkdfklasdjf sjklñadf. In diesem Fall kann es mühsam sein, .val () zu verwenden, um dem Textbereich einen Wert zuzuweisen.

0
user306265

Verwenden Sie einfach diesen Code und Sie werden immer den Wert haben:

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

Also prüft es val () und setzt seinen Wert. Wenn val () eine leere Zeichenfolge erhält, NULL, NaN o.s. es wird nach html () und dann nach text () suchen ...

0
Simon

Ich denke, es fehlt ein wichtiger Aspekt:

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

funktioniert nur, wenn ein ID-Selektor vorhanden ist (#)

für die Klassenauswahl gibt es eine Option zur Verwendung des nativen Werts wie:

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

Das funktioniert:

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

Denken Sie daran, dass der schwierige Teil hier darin besteht, sicherzustellen, dass Sie die richtige ID verwenden. Und bevor Sie die ID verwenden, stellen Sie sicher, dass Sie # davor setzen.

0
ADL