【转】如何实现<textarea> placeholder自动换行?

转自:http://segmentfault.com/q/1010000002677808

写的是移动端的web,定义了一个textarea,在placeholder中添加了一些提示语。由于有些手机屏幕不同,placeholder的内容不会自动换行,而是超出了屏幕显示区域。
之前搜索过一些关于placeholder换行的内容,说是加入ward="hard"属性强制换行(添加过,无效。)手动设标记换行(对于其他屏幕大移动设备不合适了)。
请问怎么样可以让placeholder的内容可以自动换行?
(ps:在电脑浏览器中和iPhone上会自动换行,但在Android内则无法实现。很奇怪的情况)

以前的博文,直接 COPY 上来了。

在 HTML5 placeholder 中,意为占位符。常会在表单中用一些简单的单词进行提示,友好的提示用户录入数据。

在 W3C 中,定义占位符为一个简单的提示(一个词语或一个短语),在帮助用户进行数据录入。若想录入较长的提示,建议在当前操作旁注明提示信息,而不是使用 placeholder

The placeholder attribute represents a short hint (a word or short phrase) intended to aid the user with data entry. A hint could be a sample value or a brief description of the expected format. The attribute, if specified, must have a value that contains no U+000A LINE FEED (LF) or U+000D CARRIAGE RETURN (CR) characters.

For a longer hint or other advisory text, place the text next to the control.

来源:http://www.w3.org/html/wg/drafts/html/master/forms.html#the-placeholde...

倘若硬是想在 textarea 标签中使用 placeholder 属性去实现换行文字提示的话,有什么办法实现呢?

于是有了以下尝试:

直接添加各种换行符是不可行的

一开始我以为,直接加上换行符就能实现,于是乎有了下面的结果:

<textarea placeholder="單行文本提示" rows="3"></textarea>
<textarea placeholder="第一行文本提示 \n 第二行文本提示 <br/> 第三行文本提示 \A 第四行文本提示" rows="3"></textarea>

<iframe width="100%" height="120" src="http://jsfiddle.net/samzeng/G276g/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe>

万能的 CSS

方法一

/* WebKit browsers */
::-webkit-input-placeholder {
    color: transparent;
}
::-webkit-input-placeholder:before {
    display: block;
    color: #999;
    content: "第一行文本提示 \A 第二行文本提示 \A 第三行文本提示 \A";
}

/* Mozilla Firefox 4 to 18 */
:-moz-placeholder {
    color: transparent;
}
:-moz-placeholder:before {
    display: block;
    color: #999;
    content: "第一行文本提示 \A 第二行文本提示 \A 第三行文本提示 \A";
}

/* Mozilla Firefox 19+ */
::-moz-placeholder {
    color: transparent;
}
::-moz-placeholder:before {
    display: block;
    color: #999;
    content: "第一行文本提示 \A 第二行文本提示 \A 第三行文本提示 \A";
}

/* Internet Explorer 10+ */
:-ms-input-placeholder {
    color: transparent;
}
:-ms-input-placeholder:before {
    display: block;
    color: #999;
    content: "第一行文本提示 \A 第二行文本提示 \A 第三行文本提示 \A";
}

<iframe width="100%" height="120" src="http://jsfiddle.net/samzeng/2phe5/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe>

方法二

* WebKit browsers */
::-webkit-input-placeholder:after {
    display: block;
    content: "第二行文本提示 \A 第三行文本提示 \A";
}

/* Mozilla Firefox 4 to 18 */
:-moz-placeholder:after {
    display: block;
    content: "第二行文本提示 \A 第三行文本提示 \A";
}

/* Mozilla Firefox 19+ */
::-moz-placeholder:after {
    display: block;
    content: "第二行文本提示 \A 第三行文本提示 \A";
}

/* Internet Explorer 10+ */
:-ms-input-placeholder:after {
    display: block;
    content: "第二行文本提示 \A 第三行文本提示 \A";
}

<iframe width="100%" height="120" src="http://jsfiddle.net/samzeng/s42hj/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe>

万能的 JavaScript

// required jQuery

var placeholder = ‘第一行文本提示\n第二行文本提示\n第三行文本提示‘;
$(‘textarea‘).val(placeholder);
$(‘textarea‘).focus(function() {
    if ($(this).val() == placeholder) {
        $(this).val(‘‘);
    }
});

$(‘textarea‘).blur(function() {
    if ($(this).val() == ‘‘) {
        $(this).val(placeholder);
    }
});

<iframe width="100%" height="120" src="http://jsfiddle.net/samzeng/vrGXa/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe>

时间: 2024-10-09 12:53:38

【转】如何实现<textarea> placeholder自动换行?的相关文章

textarea placeholder文字换行

要实现这样的效果 第一反应是直接在placeholder属性值里输入\n换行,如: <textarea rows="5" cols="50" placeholder="1.textarea\n2.success"></textarea> 浏览器直接输出了它,类似地输入<br/>也行不通 解决方法是换成 <textarea rows="5" cols="50" pla

textarea placeholder 换行问题处理

APP中嵌入webview时  碰到的文字对齐需求  ----主测 chrome   firefox   safari 第一感觉就是直接在placeholder属性中写入 \n  <br> 之类的 ,然而并没什么用 网上查了下   各种说辞不一, 归纳总结如下: 有效方法列表: · 类似\n的解决方式   如: [1]  placeholder="Line 1    Line 2" [2]   placeholder="Line 1 Line2"    

IE8 不支持html5 placeholder的解决方案

IE8不支持html5 placeholder的解决方法. /** * jQuery EnPlaceholder plug * version 1.0 2014.07.01戈志刚 * by Frans.Lee <[email protected]> http://www.ifrans.cn */ (function ($) { $.fn.extend({ "iePlaceholder":function (options) { options = $.extend({ pl

改变form里面input,textarea.select等的默认样式

因为在项目中有时候需要照顾到整体的色调问题,所以不得不对表单默认的样式进行更改,以下只是对input里的文本颜色做了更改. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> input::-webkit-input-placeholder, texta

判断浏览器是否支持某些新属性---placeholder兼容问题解决

function is_true(){ return 'placeholder' in document.createElement('input'); } 实例:placeholder在低版本IE浏览器下兼容性解决 <script type="text/javascript"> if( !('placeholder' in document.createElement('input'))){ $('input[placeholder],textarea[placehold

使用JQuery统计input和textarea文字输入数量代码

本文主要介绍了jQuery实现统计输入文字个数的方法,需要的朋友可以参考下. HTML部分: <input type="text" value="我是输入的文字" maxlength="10" id="detail1"/> <p><span id="detail1_num">0</span>/<span>10</span></p&

兼容IE8 input的placeholder的文字显示

if( !('placeholder' in document.createElement('input')) ){ $('input[placeholder],textarea[placeholder]').each(function(){ var that = $(this), text= that.attr('placeholder'); // console.log(text); if(that.val()===""){ that.val(text).addClass('pla

&lt;textarea&gt;输入框提示文字

背景 看了过时的资料,花费大把时间,不过也有收获,还是写写吧! 分析 有同学可能想到直接在<textarea>标签内输入帮助文字,但是这又有一个新问题--因为<textarea>设置了默认内容,如果用户不点击输入框(更改输入框的文本),而直接提交,就把默认的提示内容提交到后台了. 参考其他同学的解决方案:创建一个div,这个div包含了帮助文字.<textarea>,并通过css的position属性来控制,将帮助文字显示到<textarea>中,点击<

placeholder兼容性问题解决方案

placeholder属性,IE对其的支持表示无奈,firefox.google chrome表示毫无压力. <input id="t1" type="text" placeholder="请输入文字" /> 由于placeholder是个新增属性,目前只有少数浏览器支持,如何检测浏览器是否支持它呢?(更多HTML5/CSS3特性检测可以访问) function hasPlaceholderSupport() {      retur