jQuery에서 텍스트 영역의 값 설정


525

다음 코드와 함께 jquery를 사용하여 텍스트 영역 필드에 값을 설정하려고합니다.

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

문제는 일단이 코드가 실행되면 텍스트 영역의 텍스트가 변경되지 않습니까?

그러나 alert($("textarea#ExampleMessage").attr("value"))새로 설정된 값을 수행 할 때 반환됩니까?


3
jQuery 매직이 <textarea>에서 val ()을 설정하지 않고 ID로 타겟팅하는 경우 동일한 ID를 가진 여러 요소가있을 수 있습니다.
billrichards

답변:


877

val을 사용해 보셨습니까?

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

5
val은 설정하는 값이 문자열인지 확인하는 데 시간이 걸리지 만 attr은 전반적으로 약간 더 마술처럼 보입니다.
enobrev

62
네. 텍스트 영역에는 값 속성이 없지만 입력에는 있습니다.
MDCore

14
동의하지만 val () 은이 인스턴스에서 설정합니다. [jquery]는 텍스트 영역 유형을 결정하고 텍스트를 설정해야합니다.
GONeale

17
textarea는 텍스트 입력과 같은 값 (JavaScript) 속성을 갖습니다. 그것은 HTML에없는 value속성을하지만 둘 다 있기 때문에, 중요하지 않습니다 val()attr('value')쓰기 자바 스크립트 값 속성에. 참고 attr()않습니다 하지 HTML 속성을 설정! 이름이 다른 class / className과 같은 경우에 대한 차이점을 숨기려고하는 동안 JavaScript 속성 만 설정합니다. 그러나 양식 요소에서와 같이 속성 및 속성이 다른 작업을 수행하는 장소의 차이는 여전히 볼 수 있습니다.
bobince

2
val(foo)나를 위해 일합니다 (jQuery 1.9.1). text(foo)잃어버린 텍스트 영역 내용을 업데이트 하면 IE의 줄 바꿈이 없어지고 val(foo)유지됩니다.
Tim

77

텍스트 영역에는 값 속성이 없으며 값은 태그 사이에 있습니다. 즉 <textarea>my text</textarea>, 입력 필드 ( <input value="my text" />) 와 다릅니다 . 이것이 attr이 작동하지 않는 이유입니다. :)


50

$("textarea#ExampleMessage").val() jquery에서 단지 마술.

당신은주의해야 텍스트 영역 사용하여 태그를 내부 HTML을 표시하고 값 속성에하지를 바로 입력 태그처럼.

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

사용해야합니다

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

또는

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

HTML 태그 또는 일반 텍스트로 표시할지 여부에 따라 다릅니다.


1
텍스트 영역에는 값이나 가치가 없으며 jquery는 개발자가 더 쉽게 생활 할 수 있도록 마술을하고 있습니다.
Scott Kirkwood

16
그것은 마술이라고 부르지 않으며, 추상화라고 불립니다. textarea는 1과 0이지만, 컴퓨터의 모든 추상화 계층은 그것을 숨 깁니다. 그것을 지적해도 괜찮지 만, 그런 이유로 사람들에게 다른 답변을 내려 보라고 요청하지 마십시오 ... :)
Espen Herseth Halvorsen

8
주의-html ()은 스크립트 태그를 실행합니다.
링컨 B

3
에서 의 jQuery API 는 .text "() 메소드는 폼 입력 또는 스크립트를 사용할 수 없습니다. .val () 메소드를 사용하여 설정하거나 입력 또는 텍스트 영역 요소의 텍스트 값을 얻을 수 있습니다. 스크립트 요소, 사용의 값을 얻으려면 .html () 메소드 "
파일럿

20

어이 들아! 그것은 단지 작동합니다

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

ID 선택기를 사용하는 경우에만 해당됩니다. 난 내 타사 생성 된 코드하지으로 수

16

나는 이것이 작동해야한다고 생각한다.

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

10

내가 현재 브라우저에서 (우린 하나이 질문에 후 시간 이후 반 년),이 (그것을 시도하기로 결정 그래서 나는 같은 질문을했다 .val) 작품

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

...에 대한

  • IE8
  • FF 3.6
  • FF4
  • 오페라 11
  • 크롬 10

1
기록상, 뛰어난 jQuery 기능 중 하나는 브라우저 호환성을 제공하는 기능이므로 .val()여러 브라우저에서 마법을
발휘할

9

안드로이드 .val.html하지 않았다 작동합니다.

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

일을했다.


1
에서 의 jQuery API 는 .text "() 메소드는 폼 입력 또는 스크립트를 사용할 수 없습니다. .val () 메소드를 사용하여 설정하거나 입력 또는 텍스트 영역 요소의 텍스트 값을 얻을 수 있습니다. 스크립트 요소, 사용의 값을 얻으려면 .html () 메소드 "
파일럿

8

나는 똑같은 문제가 있었고이 솔루션은 효과가 없었지만 html을 사용하는 것이 효과가 있었다.

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

3
아니오, html()텍스트 영역 당 한 번만 작업하고 있습니다. 다음 번에의 내용을 동적으로 변경하고 싶 textarea거나 html()작동하지 않습니다 ...
Legionar

@Legionar 그러면이 사건을 어떻게 처리합니까?
Jawand Singh

글쎄,이 기능은 stackoverflow.com/questions/1219860 / ... 이 함수를 사용하여 텍스트 영역에서 인코딩 된 값을 설정했습니다.$('#textarea').val(encodedtext);
Jawand Singh

5

문제가 있습니다 : 주어진 div의 포함에서 HTML 코드를 생성해야합니다. 그런 다음이 원시 HTML 코드를 텍스트 영역에 넣어야합니다. $ (textarea) .val () 함수를 다음과 같이 사용할 때 :

$ (textarea) .val ( "<input type = 'text'value = ''style ="background와 같은 일부 html : 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>

그리고 텍스트 영역을 채우는 데 작동하지 않는 javascript / jquery 코드는 다음과 같습니다.

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

최종적으로 해결책 :

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

트릭은 replaceWith 함수를 돕기 위해 텍스트 영역을 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거나 html()작동하지 않습니다 ...
Legionar

그리고 만약 당신이 .empty (). html ( 'newContent') @Legionar?
VH

3

그것은 나를 위해 작동합니다 .... 나는 페이스 북 벽을 만들었습니다 ...

내 코드의 기초는 다음과 같습니다.

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

3

인코딩 된 HTML의 텍스트 영역 값을 설정하려면 (HTML로 표시) 사용해야합니다. .html( the_var ) 하지만 다시 시도하면 설정 한대로 작동하지 않을 수 있습니다.

텍스트 영역을 비운 .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를 사용하여 시도하고 버그가있었습니다 ... 나는 기본 js를 사용하여 끝납니다.

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



2

중요한 측면이 하나 없다고 생각합니다.

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

ID 선택기 (#)가있는 경우에만 작동

클래스 선택기의 경우 다음과 같은 기본 값을 사용하는 옵션이 있습니다.

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

1

허용 된 답변은 저에게 효과적이지만 페이지로드가 완료된 후 코드를 실행해야한다는 것을 깨달은 후에야 가능합니다. 이 상황에서 인라인 스크립트가 작동하지 않았습니다. #my_form이 아직로드되지 않았기 때문입니다.

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

pdub23, 새로운 답변을 만드는 것보다 항상 받아 들여진 답변에 대해 언급하는 것이 좋습니다…
Fábio Batista

1

아래 스 니펫을 사용할 수도 있습니다.

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

1

페이지에 JQuery v1.4.4가 있었을 때 둘 다 작동하지 않았습니다. JQuery v1.7.1을 내 페이지에 삽입하면 마침내 작동했습니다. 그래서 제 경우에는 JQuery 버전이 문제를 일으켰습니다.

id ==> 텍스트

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

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).val(unknown_var + '')

.val () 메소드는 텍스트 영역에서 확실히 사용됩니다-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을 가져 오면 html ()을 확인한 다음 text ()를 확인합니다.


0

이것은 작동합니다 :

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

여기서 까다로운 부분은 올바른 ID를 사용하는 것입니다. ID를 사용하기 전에 ID를 입력하십시오 #.


0

데이터베이스의 데이터를 사용할 때 문제가 발생할 $("textarea#ExampleMessage").html('whatever you want to put here');수 있으므로 사용 하는 것이 좋습니다 .val().

예를 들면 다음과 같습니다.

로 명명 된 데이터베이스 필드 description는 다음 값을가집니다 asjkdfklasdjf sjklñadf. 이 경우 텍스트 영역에 값을 할당하기 위해 .val ()을 사용하는 것은 지루한 작업이 될 수 있습니다.


0

JQuery를 사용하여 value / text / 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.