나는 몇 가지 접근법을 시도했지만 아무도 효과가 없었다. 누구 든지이 문제를 해결하는 멋진 트릭을 알고 있습니까?
<textarea placeholder='This is a line \n this should be a new line'></textarea>
<textarea placeholder='This is a line
should this be a new line?'></textarea> <!-- this works in chrome apparently -->
업데이트 : 크롬에서는 작동하지 않습니다. 그냥 텍스트 영역 너비였습니다.
답변
당신이 할 수있는 일은 value
줄 바꿈을 존중하는 텍스트를로 추가하는 것입니다 \n
.
$('textarea').attr('value', 'This is a line \nthis should be a new line');
그런 다음 그것을 제거하고 focus
다시 비울 수 있습니다 (비어있는 경우).blur
. 이 같은
var placeholder = 'This is a line \nthis should be a new line';
$('textarea').attr('value', placeholder);
$('textarea').focus(function(){
if($(this).val() === placeholder){
$(this).attr('value', '');
}
});
$('textarea').blur(function(){
if($(this).val() ===''){
$(this).attr('value', placeholder);
}
});
예: http://jsfiddle.net/airandfingers/pdXRx/247/
순수한 CSS는 아니지만 깨끗 하지는 않지만 트릭을 수행합니다.
답변
자리 표시 자 속성 안에 새 줄 html 엔터티를 삽입 할 수 있습니다 .
<textarea name="foo" placeholder="hello you Second line Third line"></textarea>
작품 : Chrome 62, IE10, Firefox 60
작동하지 않습니다 : Safari 11
답변
그렇게 할 수 있다고 생각하지 마십시오. http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute
관련 내용 (강조 광산) :
자리 표시 자 특성은 컨트롤에 값이 없을 때 사용자가 데이터를 입력 할 수 있도록 하는 짧은 힌트 (단어 또는 짧은 문구)를 나타냅니다 . 힌트는 샘플 값이거나 예상되는 형식에 대한 간단한 설명 일 수 있습니다. 지정된 경우 속성에 U + 000A LINE FEED (LF) 또는 U + 000D CARRIAGE RETURN (CR) 문자가 포함되지 않은 값이 있어야합니다.
답변
업데이트 (2016 년 1 월) : 멋진 작은 핵이 더 이상 모든 브라우저에서 작동하지 않을 수 있으므로 아래에 작은 자바 스크립트가있는 새로운 솔루션이 있습니다.
좋은 작은 해킹
기분이 좋지는 않지만 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;
텍스트 영역의 크기가 (참조 jsfiddle)에 고정되도록 CSS에서.
또는
새 줄을 원할 때 return 키를 두 번 누르십시오 (따라서 ‘새 줄’사이에 빈 줄이 있습니다. 만들어진 ‘빈 줄’에는 텍스트 영역의 너비와 같은 충분한 탭 / 공간이 있어야합니다. 너무 많은 경우 문제가되지 않는 것만으로 충분합니다. 이것은 너무 더럽고 브라우저와 호환되지 않을 수 있습니다. 더 쉬운 방법이 있었으면 좋겠습니다!
더 나은 솔루션
JSFiddle을 확인하십시오 .
- 이 솔루션은 텍스트 영역 뒤에 div를 배치합니다.
- 일부 자바 스크립트는 텍스트 영역의 배경색을 변경하여 자리 표시자를 적절하게 숨기거나 표시하는 데 사용됩니다.
- 입력과 자리 표시자는 동일한 글꼴 크기를 가져야하므로 두 믹스 인입니다.
- 텍스트 영역 의
box-sizing
및display: block
속성이 중요하거나 뒤에있는 div의 크기가 동일하지 않습니다. - 텍스트 영역의 설정
resize: vertical
및 amin-height
도 중요합니다. 자리 표시 자 텍스트가 어떻게 줄 바꿈되는지 확인하고 텍스트 영역을 확장하면 흰색 배경이 유지됩니다. 그러나resize
속성을 주석 처리 하면 텍스트 영역을 가로로 확장 할 때 문제가 발생합니다. - 텍스트 영역의 최소 높이가 전체 자리 표시자를 가장 작은 너비로 덮을 수있을만큼 충분한 지 확인하십시오. **
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();
}
자바 스크립트 :
$("textarea").on('change keyup paste', function() {
var length = $(this).val().length;
if (length > 0) {
$(this).addClass('data-edits');
} else {
$(this).removeClass('data-edits');
}
});
답변
CSS 솔루션은 어떻습니까 : http://cssdeck.com/labs/07fwgrso
::-webkit-input-placeholder::before {
content: "FIRST\000ASECOND\000ATHIRD";
}
::-moz-placeholder::before {
content: "FIRST\000ASECOND\000ATHIRD";
}
:-ms-input-placeholder::before {
content: "FIRST\000ASECOND\000ATHIRD";
}
답변
살라 문 알레 쿰
Chrome에서 작동
<textarea placeholder="Enter Choice#1 Enter Choice#2 Enter Choice#3"></textarea>
Windows 10.0 (빌드 10240) 및 Chrome 버전 47.0.2526.80 m에서 이것을 테스트했습니다.
08:43:08 AST 6 Rabi Al-Awwal, 1437 2015 년 12 월 17 일 목요일
감사합니다
답변
CSS 또는 자바 스크립트를 작성할 필요없이 줄 바꿈을 위해 & # 10 만 추가하십시오.
textarea{
width:300px;
height:100px;
}
<textarea placeholder='This is a line this 
should be a new line'></textarea>
<textarea placeholder=' This is a line
should this be a new line?'></textarea>