ตั้งค่า textarea ใน jQuery


525

ฉันพยายามตั้งค่าในฟิลด์ textarea โดยใช้ jquery ด้วยรหัสต่อไปนี้:

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

ปัญหาคือเมื่อโค้ดนี้รันมันจะไม่เปลี่ยนข้อความใน textarea?

อย่างไรก็ตามเมื่อดำเนินการalert($("textarea#ExampleMessage").attr("value"))กับค่าที่ตั้งใหม่จะถูกส่งกลับ?


3
หากเวทมนตร์ jQuery ไม่ทำงานเพื่อตั้งค่า val () ใน <textarea> และคุณกำหนดเป้าหมายตาม ID โอกาสที่จะมีองค์ประกอบหลายอย่างที่มี ID เดียวกัน
บิลเลียด

คำตอบ:


877

คุณลองวาลแล้วหรือยัง?

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

5
ส่วนใหญ่เป็นความจริงแม้ว่าวาลจะใช้เวลาในการทำให้แน่ใจว่าค่าที่คุณตั้งไว้นั้นเป็นสตริง
enobrev

62
ใช่. textarea ไม่มีแอตทริบิวต์ค่าในขณะที่อินพุตทำ
MDCore

14
ตกลง แต่ val () กำลังตั้งค่าในตัวอย่างนี้ พวกเขา [jquery] จะต้องกำหนดประเภทของ textarea และตั้งค่าข้อความ
GONeale

17
textarea มีคุณสมบัติค่า (JavaScript) เหมือนกับการป้อนข้อความ มันไม่มีvalueแอตทริบิวต์HTML แต่ก็ไม่สำคัญเพราะทั้งคู่val()และattr('value')เขียนไปยังคุณสมบัติค่า JavaScript หมายเหตุattr()ไม่ได้ตั้งค่าคุณสมบัติ HTML! มันตั้งค่าคุณสมบัติ JavaScript เท่านั้นขณะที่พยายามซ่อนความแตกต่างสำหรับเคสเช่น class / className ที่ชื่อแตกต่างกัน แต่คุณจะยังคงเห็นความแตกต่างสำหรับสถานที่ที่แอตทริบิวต์และทรัพย์สินทำสิ่งต่าง ๆ เช่นในองค์ประกอบของแบบฟอร์ม
bobince

2
val(foo)ทำงานได้สำหรับฉัน (jQuery 1.9.1) การใช้text(foo)loses เพื่อปรับปรุงเนื้อหา textarea จะทำให้ linebreaks หายไปใน IE โดยใช้การval(foo)เก็บรักษาไว้
ทิม

77

Textarea ไม่มีแอททริบิวต์ค่าค่าของมันมาระหว่างแท็กเช่น: <textarea>my text</textarea>มันไม่เหมือนกับฟิลด์อินพุต ( <input value="my text" />) นั่นเป็นเหตุผลที่ attr ไม่ทำงาน :)


50

$("textarea#ExampleMessage").val() ใน jquery เพียงมายากล

คุณควรสังเกตว่าแท็กtextareaโดยใช้html ภายในเพื่อแสดงและไม่อยู่ในแอตทริบิวต์ valueเช่นเดียวกับแท็กอินพุต

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

คุณควรใช้

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

หรือ

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

ขึ้นอยู่กับว่าคุณต้องการแสดงเป็นแท็ก html หรือข้อความธรรมดา


1
คุณถูกต้อง textarea ไม่มีค่าหรือคุณค่าและ jquery กำลังทำเวทมนตร์เพื่อทำให้ชีวิตง่ายขึ้นสำหรับนักพัฒนา
Scott Kirkwood

16
มันไม่ได้เรียกว่าเวทมนต์มันเรียกว่านามธรรม textarea เป็นเพียง 1 และ 0 แต่สิ่งที่เป็นนามธรรมทั้งหมดในคอมพิวเตอร์ของคุณจะซ่อนสิ่งนั้นไว้สำหรับคุณ มันโอเคที่จะชี้ให้มันออกมา แต่โปรดอย่าถามคนที่จะ downvote คำตอบอื่น ๆ ด้วยเหตุผลดังกล่าว ... :)
Espen Herseth Halvorsen

8
beware - html () เรียกใช้งานแท็กสคริปต์
Lincoln B

3
จากjQuery API "วิธีการ. text () ไม่สามารถใช้กับอินพุตหรือสคริปต์ของฟอร์มในการตั้งค่าหรือรับค่าข้อความขององค์ประกอบอินพุตหรือ textarea ให้ใช้วิธี. val () เพื่อรับค่าขององค์ประกอบสคริปต์ให้ใช้ วิธีการ. html ()
นักบิน

20

Oohh มากับเด็กผู้ชาย! มันใช้งานได้กับ

$('#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
  • Opera 11
  • Chrome 10

1
สำหรับบันทึกแล้วหนึ่งในคุณสมบัติการทำงานของ jQuery ที่ยอดเยี่ยมคือหนึ่งในความเข้ากันได้ของเบราว์เซอร์ดังนั้นใช่มันค่อนข้างเป็นไปได้ที่.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 ครั้งต่อไปที่คุณต้องการที่จะเปลี่ยนแปลงเนื้อหาแบบไดนามิกของtextarea, html()จะไม่ทำงาน ...
Legionar

@ Legionar แล้วจะจัดการกับกรณีนี้อย่างไร?
Jawand Singh

ดีอันนี้ช่วยฉันstackoverflow.com/questions/1219860/…โดยใช้ฟังก์ชั่นเหล่านี้ฉันเพิ่งตั้งค่าการเข้ารหัสใน textarea โดยใช้$('#textarea').val(encodedtext);
Jawand Singh

5

มีปัญหา: ฉันต้องสร้างรหัส html จากการบรรจุของ div ที่กำหนด จากนั้นฉันต้องใส่รหัส html ดิบนี้ใน textarea เมื่อฉันใช้ฟังก์ชัน $ (textarea) .val () เช่นนี้:

$ (textarea) .val ("บาง html เช่น <input type = 'text' value = '' style =" background: url ('http://www.w.com/bg.gif') ศูนย์ซ้ำ x "/> bla bla");

หรือ

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

ฉันมีปัญหากับอักขระพิเศษบางตัว (& '") เมื่ออยู่ระหว่าง quot; แต่เมื่อฉันใช้ฟังก์ชั่น: $ (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 ที่ไม่สามารถเติม textarea ได้คือ:

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

ขั้นสุดท้ายแก้ปัญหา:

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

เคล็ดลับคือตัด textarea ของคุณด้วยแท็ก span เพื่อช่วยในการ replaceWith ฟังก์ชั่น ฉันไม่แน่ใจว่ามันสะอาดมากหรือไม่ แต่มันก็ทำงานได้สมบูรณ์แบบเช่นกันเพิ่มรหัส html ดิบลงใน textarea


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 ครั้งต่อไปที่คุณต้องการที่จะเปลี่ยนแปลงเนื้อหาแบบไดนามิกของtextarea, html()จะไม่ทำงาน ...
Legionar

และถ้าคุณทำ. ที่ว่าง (). html ('newContent') @Legionar
VH

3

มันใช้งานได้สำหรับฉัน .... ฉันได้สร้างกำแพงหนังสือหน้า ...

นี่คือพื้นฐานของรหัสของฉัน:

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

3

ในการตั้งค่า textarea ของ HTML ที่เข้ารหัส (เพื่อแสดงเป็น 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 ... ฉัน endup ใช้ native js

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

2

เราสามารถใช้วิธี. val () หรือ. text () วิธีการตั้งค่า เราจำเป็นต้องใส่ค่าใน val () เช่น val ("hello")

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

ตรวจสอบตัวอย่างได้ที่นี่: http://www.codegateway.com/2012/03/set-value-to-textarea-jquery.html



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

เมื่อฉันมี 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 () จากนั้นหาข้อความ () ...


0

งานนี้:

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

จำไว้ว่าส่วนที่ยุ่งยากนี่ทำให้แน่ใจว่าคุณใช้ ID ที่ถูกต้อง และก่อนที่คุณจะใช้ ID ต้องแน่ใจ#ก่อนว่าคุณใส่มัน


0

การใช้$("textarea#ExampleMessage").html('whatever you want to put here');อาจเป็นวิธีที่ดีเพราะ.val()อาจมีปัญหาเมื่อคุณใช้ข้อมูลจากฐานข้อมูล

ตัวอย่างเช่น:

เขตข้อมูลฐานข้อมูลชื่อเป็นมีค่าต่อไปนี้description asjkdfklasdjf sjklñadfในกรณีนี้การใช้. val () เพื่อกำหนดค่าให้กับ textarea อาจเป็นงานที่น่าเบื่อ


0

ฉันพยายามกำหนดค่า / ข้อความ / html โดยใช้ JQuery แต่ไม่ประสบความสำเร็จ ดังนั้นฉันจึงลองทำสิ่งต่อไปนี้

ในกรณีนี้ฉันกำลังฉีดองค์ประกอบ textarea ใหม่ไปหลังจาก DOM สร้างขึ้น

 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.