Установить значение textarea в jQuery - PullRequest
491 голосов
/ 06 января 2009

Я пытаюсь установить значение в поле textarea, используя jquery со следующим кодом:

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

Проблема в том, что после выполнения этого кода он не изменяет текст в текстовой области?

Однако при выполнении alert($("textarea#ExampleMessage").attr("value")) возвращается новое установленное значение?

Ответы [ 23 ]

822 голосов
/ 06 января 2009

Вы пробовали val?

$("textarea#ExampleMessage").val(result.exampleMessage);
71 голосов
/ 06 января 2009

Текстовое поле не имеет атрибута значения, его значение находится между тегами, т.е.: <textarea>my text</textarea>, оно не похоже на поле ввода (<input value="my text" />). Вот почему attr не работает:)

45 голосов
/ 07 мая 2010

$("textarea#ExampleMessage").val() в jquery просто волшебство.

Вы должны заметить, что тег textarea использует для отображения внутренний html и не в атрибуте значения , как и тег ввода.

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

Вы должны использовать

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

или

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

зависит от того, хотите ли вы отобразить его в виде HTML-тегов или простого текста.

15 голосов
/ 17 ноября 2009

Ох, да ладно, мальчики! это работает только с

$('#your_textarea_id').val('some_value');
14 голосов
/ 06 января 2009

Я думаю, что это должно работать:

$("textarea#ExampleMessage").val(result.exampleMessage);
10 голосов
/ 06 апреля 2011

У меня был тот же вопрос, поэтому я решил попробовать его в текущих браузерах (мы спустя полтора года после этого вопроса), и это (.val) работает

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

для

  • IE8
  • FF 3,6
  • FF4
  • Опера 11
  • Chrome 10
8 голосов
/ 20 июня 2015

На андроиде .val и .html не работает.

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

сделал работу.

8 голосов
/ 12 января 2010

У меня была та же проблема, и это решение не работало, но работало только использование html

$('#your_textarea_id').html('some_value');
5 голосов
/ 04 декабря 2013

Текстовая область не имеет значения. jQuery .html () работает в этом случае

$("textarea#ExampleMessage").html(result.exampleMessage);
5 голосов
/ 22 ноября 2010

Есть проблема: мне нужно сгенерировать HTML-код из содержимого данного div. Затем я должен поместить этот необработанный HTML-код в текстовую область. Когда я использую функцию $ (textarea) .val () следующим образом:

$ (textarea) .val ("некоторые html как bla bla ");

или

$ ( '# idTxtArGenHtml'). Вал ( $ ('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>

И код javascript / jquery, который не работает для заполнения текстовой области:

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

Окончательное решение:

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

Хитрость заключается в том, чтобы обернуть текстовое поле тегом span, чтобы помочь с функцией replaceWith. Я не уверен, что он очень чистый, но он отлично работает, добавьте необработанный HTML-код в текстовую область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...