Nhiều dòng đầu vào trong <kiểu đầu vào = văn bản trên mạng />


403

Tôi có văn bản này nhập dưới dạng:

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

Tôi đang cố gắng để có được nó để có nhiều dòng đầu vào. Chiều rộng và chiều cao làm cho hộp lớn hơn, nhưng người dùng có thể nhập tất cả (các) văn bản mà anh ta muốn nhưng nó chỉ lấp đầy một dòng.

Làm thế nào để tôi làm cho đầu vào giống như một textarea?

Câu trả lời:


676

Bạn cần sử dụng textarea để xử lý đa dòng.

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


62
Và thẻ textarea không thể tự đóng. <textarea \>không có hiệu lực.
Alex H

29
@alexH không phân biệt textarea, đó là dấu gạch chéo sai. Câu trả lời ban đầu đã tự đóng, nhưng ít nhất đó là dấu gạch chéo chính xác.
Adam

4
@Adam tôi biết, nhưng tôi không thể chỉnh sửa tôi nữa. Và tôi không muốn loại bỏ nó, bởi vì theo tôi, phần tự đóng là quan trọng.
Alex H

4
Có, nhưng, textareakhông hỗ trợ patternthuộc tính. Thật là chết tiệt.
chập chững

1
Điều tôi không thích ở đây là trong JQuery, bạn không thể đặt giá trị textarea bằng cách sử dụng val(). Bạn phải appendlàm điều đó. :(
Malcolm Salvador

59

Có thể tạo một dòng nhiều văn bản bằng cách cho nó word-break: break-word;thuộc tính. (Chỉ thử nghiệm điều này trong Chrome)


1
Cảm ơn! Tôi nhận thấy rằng Chrome đã cho phép nhiều dòng cho đầu vào, điều mà tôi hoàn toàn không muốn và lý do là ngắt từ được kế thừa từ phần tử cơ thể
rap1ds

3
Có vẻ tốt trong Chrome 39 và Safari 8.0.2, nhưng không phải Firefox 34 trong thử nghiệm ngắn gọn của tôi. :( jsfiddle.net/msybs9g7
Jeremy Wadhams

5
Tôi nghĩ rằng nó không còn hoạt động trong Chrome.
Fifi

53

Bạn không thể. Tại thời điểm viết, phần tử biểu mẫu HTML duy nhất được thiết kế thành nhiều dòng là <textarea>.


49

Sử dụng văn bản

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

không chừa bất kỳ khoảng trống nào giữa các thẻ mở và đóng hoặc Khác Điều này sẽ để lại một số dòng hoặc khoảng trống.



7

Bạn nên sử dụng textareađể hỗ trợ đầu vào nhiều dòng.

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

1

Nếu bạn cần textarea với chiều cao tự động, hãy sử dụng theo sau với javascript thuần túy,

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

Đầu vào không hỗ trợ nhiều dòng. Bạn cần sử dụng một textarea để đạt được tính năng đó.

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

Hãy nhớ rằng <textarea>giá trị bên trong thẻ , không phải trong thuộc tính:

<textarea>INITIAL VALUE GOES HERE</textarea>

Nó không thể tự đóng như: <textarea/>


Để biết thêm thông tin, hãy xem điều này .


0

Nếu bạn đang sử dụng React, thư viện document-ui.com có ​​thể giúp bạn:

  <FormControl>
    <InputLabel htmlFor="textContract">{`textContract`}</InputLabel>
    <Input
      id="textContract"
      multiline
      rows="30"
      type="text"
      value={props.textContract}
      onChange={() => {}}
    />
  </FormControl>

https://m Material-ui.com/components/text-fields/#multiline


-2

Sử dụng <div contenteditable="true">( được hỗ trợ tốt ) với việc lưu trữ vào <input type="hidden">.

HTML:

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

js (sử dụng 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
    }
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.