อัปเดต (ม.ค. 2559):แฮ็คตัวเล็ก ๆ อาจไม่ทำงานบนเบราว์เซอร์ทั้งหมดอีกต่อไปดังนั้นฉันจึงมีโซลูชันใหม่พร้อมจาวาสคริปต์เล็ก ๆ ด้านล่าง
แฮ็คน้อยที่ดี
รู้สึกไม่ดี แต่คุณสามารถใส่บรรทัดใหม่ใน html ได้ แบบนี้:
<textarea rows="6" id="myAddress" type="text" placeholder="My Awesome House,
1 Long St
London
Postcode
UK"></textarea>
สังเกตว่าแต่ละบรรทัดอยู่ในบรรทัดใหม่ (ไม่ได้ถูกห่อ) และเยื้อง 'แท็บ' แต่ละแท็บคือ 4 ช่องว่าง ได้รับมันไม่ใช่วิธีที่ดีมาก แต่ดูเหมือนว่าจะทำงาน:
http://jsfiddle.net/01taylop/HDfju/
- เป็นไปได้ว่าระดับการเยื้องของแต่ละบรรทัดจะแตกต่างกันไปตามความกว้างของพื้นที่ข้อความของคุณ
- มันเป็นสิ่งสำคัญที่จะมี
resize: none;
ใน css เพื่อให้ขนาดของ textarea ได้รับการแก้ไข (ดู jsfiddle)
อีกทางเลือกหนึ่ง
เมื่อคุณต้องการขึ้นบรรทัดใหม่ให้กดส่งคืนสองครั้ง (ดังนั้นจะมีบรรทัดว่างระหว่าง 'บรรทัดใหม่' ของคุณการสร้าง 'บรรทัดว่าง' นี้จำเป็นต้องมีแท็บ / ช่องว่างเพียงพอที่จะเท่ากับความกว้างของ textarea ของคุณ ดูเหมือนจะมีความสำคัญถ้าคุณมีมากเกินไปคุณแค่ต้องการพอนี่สกปรกมากและอาจไม่เข้ากันได้กับเบราว์เซอร์ฉันหวังว่าจะมีวิธีที่ง่ายกว่านี้!
ทางออกที่ดีกว่า
ตรวจสอบJSFiddle
- วิธีการแก้ปัญหานี้ตำแหน่ง div หลัง textarea
- จาวาสคริปต์บางตัวใช้เพื่อเปลี่ยนสีพื้นหลังของ textarea ซ่อนหรือเปิดเผยตัวยึดตำแหน่งอย่างเหมาะสม
- อินพุตและตัวยึดต้องมีขนาดแบบอักษรเดียวกันดังนั้นทั้งสองมิกซ์อิน
box-sizing
และdisplay: block
คุณสมบัติในการ textarea มีความสำคัญหรือ div ที่อยู่เบื้องหลังมันจะไม่เป็นขนาดเดียวกัน
- การตั้งค่า
resize: vertical
และ a min-height
บน textarea ก็มีความสำคัญเช่นกันโปรดสังเกตว่าตัวยึดข้อความจะตัดและขยาย textarea อย่างไรจะรักษาพื้นหลังสีขาว อย่างไรก็ตามการแสดงความคิดเห็นออกresize
คุณสมบัติจะทำให้เกิดปัญหาเมื่อขยาย textarea แนวนอน
- เพียงตรวจสอบให้แน่ใจว่าความสูงขั้นต่ำของ textarea นั้นเพียงพอที่จะครอบคลุมพื้นที่ที่คุณยึดไว้ทั้งหมดด้วยความกว้างที่เล็กที่สุด **

HTML:
<form>
<input type='text' placeholder='First Name' />
<input type='text' placeholder='Last Name' />
<div class='textarea-placeholder'>
<textarea></textarea>
<div>
First Line
<br /> Second Line
<br /> Third Line
</div>
</div>
</form>
SCSS:
$input-padding: 4px;
@mixin input-font() {
font-family: 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
font-size: 12px;
font-weight: 300;
line-height: 16px;
}
@mixin placeholder-style() {
color: #999;
@include input-font();
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
form {
width: 250px;
}
input,textarea {
display: block;
width: 100%;
padding: $input-padding;
border: 1px solid #ccc;
}
input {
margin-bottom: 10px;
background-color: #fff;
@include input-font();
}
textarea {
min-height: 80px;
resize: vertical;
background-color: transparent;
&.data-edits {
background-color: #fff;
}
}
.textarea-placeholder {
position: relative;
> div {
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: $input-padding;
background-color: #fff;
@include placeholder-style();
}
}
::-webkit-input-placeholder {
@include placeholder-style();
}
:-moz-placeholder {
@include placeholder-style();
}
::-moz-placeholder {
@include placeholder-style();
}
:-ms-input-placeholder {
@include placeholder-style();
}
javascript:
$("textarea").on('change keyup paste', function() {
var length = $(this).val().length;
if (length > 0) {
$(this).addClass('data-edits');
} else {
$(this).removeClass('data-edits');
}
});
<?="\n"?>
บรรทัดใหม่ได้