อินพุตหลายบรรทัดใน <input type =“ text” />


403

ฉันมีข้อความนี้ในรูปแบบ:

<input type="text"
       cols="40" 
       rows="5" 
       style="width:200px; height:50px;" 
       name="Text1" 
       id="Text1" 
       value="" />

ฉันพยายามทำให้อินพุทหลายบรรทัด ความกว้างและความสูงทำให้กล่องใหญ่ขึ้น แต่ผู้ใช้สามารถป้อนข้อความทั้งหมดที่ต้องการได้ แต่จะเติมเพียงบรรทัดเดียวเท่านั้น

ฉันจะทำให้อินพุตเหมือน textarea มากขึ้นได้อย่างไร

คำตอบ:


676

คุณต้องใช้ textarea เพื่อรับการจัดการแบบหลายบรรทัด

<textarea name="Text1" cols="40" rows="5"></textarea>


62
และแท็ก textarea ไม่สามารถปิดตัวเองได้ <textarea \>ไม่ถูกต้อง
Alex H

29
@alexH โดยไม่คำนึงถึง textarea นั่นเป็นเครื่องหมายทับที่ผิด คำตอบเดิมมีการปิดตัวเอง แต่อย่างน้อยมันก็เป็นเครื่องหมายทับที่ถูกต้อง
อดัม

4
@ อดัมฉันรู้ แต่ฉันไม่สามารถแก้ไขได้อีก และฉันไม่ต้องการที่จะลบมันเพราะในความคิดของฉันส่วนการปิดตัวเองเป็นสิ่งสำคัญ
Alex H

4
ใช่ แต่textareaไม่รองรับpatternแอตทริบิวต์ ยี้
toddmo

1
สิ่งที่ฉันไม่ชอบเกี่ยวกับเรื่องนี้ก็คือว่าใน JQuery, val()คุณไม่สามารถตั้งค่าการใช้ คุณต้องappendทำมัน :(
Malcolm Salvador

59

มันเป็นไปได้ที่จะทำให้การป้อนข้อความแบบหลายบรรทัดโดยให้มันเป็นword-break: break-word;คุณลักษณะ (ทดสอบเฉพาะใน Chrome เท่านั้น)


1
ขอบคุณ! ฉันสังเกตเห็นว่า Chrome อนุญาตให้มีอินพุตหลายบรรทัดสำหรับสิ่งที่ฉันไม่ต้องการทั้งหมดและเหตุผลก็คือการหยุดพักคำซึ่งสืบทอดมาจากองค์ประกอบของร่างกาย
rap1ds

3
ดูดีใน Chrome 39 และ Safari 8.0.2 แต่ไม่ใช่ Firefox 34 ในการทดสอบสั้น ๆ ของฉัน :( jsfiddle.net/msybs9g7
Jeremy Wadhams

5
ฉันคิดว่ามันไม่ทำงานใน Chrome อีกต่อไป
Fifi

53

คุณทำไม่ได้ ในช่วงเวลาของการเขียนองค์ประกอบเพียงรูปแบบ HTML <textarea>ที่ออกแบบมาเพื่อเป็นแบบหลายบรรทัด


49

ใช้ textarea

<textarea name="textarea" style="width:250px;height:150px;"></textarea>

อย่าเว้นที่ว่างระหว่างแท็กเปิดและแท็กปิดหรืออื่น ๆ นี่จะทำให้บรรทัดว่างหรือช่องว่างว่างเปล่า



7

คุณควรใช้textareaเพื่อรองรับอินพุตหลายบรรทัด

<textarea rows="4" cols="50">
Here you can write some text to display in the textarea as the default text
</textarea>

1

หากคุณต้องการtextarea ที่มีความสูงอัตโนมัติให้ใช้ดังนี้ด้วยจาวาสคริปต์ที่บริสุทธิ์

function auto_height(elem) {  /* javascript */
    elem.style.height = "1px";
    elem.style.height = (elem.scrollHeight)+"px";
}
.auto_height { /* CSS */
  width: 100%;
}
<textarea rows="1" class="auto_height" oninput="auto_height(this)"></textarea>


0

อินพุตไม่รองรับหลายบรรทัด คุณต้องใช้ textareaเพื่อให้ได้คุณสมบัตินั้น

<textarea name="Text1"></textarea>

จำไว้ว่า<textarea>มีค่าอยู่ภายในแท็กไม่ใช่ในแอตทริบิวต์:

<textarea>INITIAL VALUE GOES HERE</textarea>

มันไม่สามารถปิดตัวเองเป็น: <textarea/>


สำหรับข้อมูลเพิ่มเติมโปรดดูไปนี้



-2

การใช้งาน<div contenteditable="true">( การสนับสนุนอย่างดี ) <input type="hidden">ที่มีการจัดเก็บไป

HTML:

<div id="multilineinput" contenteditable="true"></div>
<input type="hidden" id="detailsfield" name="detailsfield">

js (โดยใช้ jQuery)

$("#multilineinput").on('keyup',function(e) {   
    $("#detailsfield").val($(this).text()); //store content to input[type=hidden]
});
//optional - one line but wrap it
$("#multilineinput").on('keypress',function(e) {    
    if(e.which == 13) { //on enter
        e.preventDefault(); //disallow newlines     
        // here comes your code to submit
    }
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.