placeholder兼容性问题以及用label代替placeholder

什么是placeholder?

答:HTML5中的一个新属性,用于表单元素中,规定可描述输入字段预期值的简短的提示信息,也就是表单元素中的预留文本。适用于下面的 input 类型:text、search、url、tel、email 和 password,还适用于textarea元素。



placeholder有哪些兼容性问题?

答:1、placeholder在IE9及以前的浏览器中不能被支持

  2、在chrome和Firefox中,当input框获取焦点时,placeholder的文字依然在,只有在input中输入内容之后才会消失;而在IE和Safari中,当input框获取焦点时placeholder的文字就消失了

  3、默认情况下placeholder的文字是灰色的,当给input设置color时,在chrome和Safari中,placeholder的文字颜色不变;而在Firefox和IE中,placeholder文字的颜色会变成color的值

  4、当希望placeholder的文字和input的输入内容在input框中都居中的时候,简单的方法就是设置text-align:center,但是在某些浏览器中(目前我发现的就是三星手机自带的浏览器),设置之后placeholder的文字依然靠左



下面对这些问题进行说明:

  1、placeholder在IE9及以前的浏览器中不能被支持

  我自己还不会,等我会了再补上

  2、在chrome和Firefox中,当input框获取焦点时,placeholder的文字依然在,只有在input中输入内容之后才会消失;而在IE和Safari中,当input框获取焦点时placeholder的文字就消失了

  这个因为没有太大影响,所以暂不考虑,要是真的希望在所有浏览器中表现一模一样,那就用我下面的label替代法吧

  3、默认情况下placeholder的文字是灰色的,当给input设置color时,在chrome和Safari中,placeholder的文字颜色不变;而在Firefox和IE中,placeholder文字的颜色会变成color的值

  可单独为placeholder文本设置color,给input设置颜色之后就不会影响到placeholder了

1 ::-moz-placeholder{color:#999;}                 //Firefox
2 ::-webkit-input-placeholder{color:#999;}      //chrome和Safari
3 :-ms-input-placeholder{color:#999;}            //IE10

  4、当希望placeholder的文字和input的输入内容在input框中都居中的时候,简单的方法就是设置text-align:center,但是在某些浏览器中(目前我发现的就是三星手机自带的浏览器),设置之后placeholder的文字依然靠左

  这里我写了一个用label代替placeholder的demo,可以解决以上所有问题,贴出代码

1 <div id="inputPlaceholder">
2     <input type="text" value="" id="inputBox" onfocus="OnFocus()" onblur="OnBlur()"  autocomplete="off">
3     <label for="inputBox" id="labelPlaceholder">请输入号码</label>
4 </div>
 1 function OnFocus () {
 2         document.getElementById("labelPlaceholder").style.display="none";             //当input获取焦点时,label隐藏
 3     }
 4 function OnBlur () {
 5         if (document.getElementById("inputBox").value=="") {
 6             document.getElementById("labelPlaceholder").style.display="block";        //当input失去焦点时,如果input框中有内容则label隐藏,如果没有内容则label显示
 7         } else{
 8             document.getElementById("labelPlaceholder").style.display="none";
 9         };
10
11     }
 1 #inputPlaceholder{
 2         width: 100%;
 3         height: auto;
 4         position: relative;
 5     }
 6 #inputBox{
 7         width: 100%;
 8         height: 30px;
 9         line-height:30px;
10         border:1px #DBEAF9 solid;
11         border-radius:5px;
12         background-color:#fff;
13         text-align:center;
14         font-size: 14px;
15         padding: 0;
16         margin: 0;
17         color:#333;
18     }
19 #labelPlaceholder{
20         width: 100%;
21         height: 32px;
22         line-height: 32px;
23         color:#999;
24         font-size: 14px;
25         position: absolute;
26         top: 0;
27         left: 0;
28         padding: 0;
29         margin: 0;
30         text-align:center;
31     }
32 ::-moz-placeholder{color:#999;}
33 ::-webkit-input-placeholder{color:#999;}
34 :-ms-input-placeholder{color:#999;} 

  效果图就是这样

  如果有错误or不足,欢迎指正

时间: 2024-11-02 21:34:07

placeholder兼容性问题以及用label代替placeholder的相关文章

placeholder兼容性问题

由于placeholder是H5新属性,IE9及以下都不支持 解决办法:给input添加一个背景图,背景图里面添加placeholder内容,当焦点落在输入框中,背景图隐藏,即可做出类似的效果 代码: //引入jQuery框架$(function(){ if(!('placeholder' in document.createElement('input'))){ jQuery(':input[placeholder]').each(function(index, element) { var

jQuery placeholder插件 让IE也能够支持placeholder属性

jQuery placeholder插件 让IE也能够支持placeholder属性 案例:整搜索框,需要默认占位符为“请输入关键词”,获取焦点时,占位符消失或不可用(不影响正常输入),丢失焦点后,若用户无内容输入,占位符继续出现,继续占位.这种代码我想前端们已经很容易就写出来了吧,现在HTML5原生就有这个“placeholder”属性,效果与上边案例描述的一样(各支持的浏览器内部表现可能不一致,但是作用是一致的),那么这一属性该怎么优雅降级到支持所有现代浏览器呢?答案还是脚本即JavaScr

placeholder兼容性问题解决方案

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

html5 input placeholder兼容性处理

1.HTML5对Web Form做了许多增强,比如input新增的type类型.Form Validation等.Placeholder是HTML5新增的另一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失.以前要实现这效果都是用JavaScript来控制才能实现: 2.由于placeholder是个新增属性,目前只有少数浏览器支持,如何检测浏览器是否支持它呢?(更多HTML5/CSS3特性检测可以访问) 1 fun

UITextView自定义placeholder功能:用一个label写了文字,然后当检测到长度不为0的时候就把label隐藏

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@"\n"]) {//检测到“完成” [textView resignFirstResponder];//释放键盘 return NO; } if (adviceMsg.text.length == 0) {//

实用的placeholder插件,兼容IE下的placeholder,jquery插件

placeholder在IE下无法兼容 ,下面的插件很好的处理了这个问题,拿去不谢 1 /* 2 * jQuery placeholder, fix for IE6,7,8,9 3 * @website itmyhome.com 4 */ 5 var JPlaceHolder = { 6 //检测 7 _check : function(){ 8 return 'placeholder' in document.createElement('input'); 9 }, 10 //初始化 11 i

placeholder 属性的兼容性

placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或输入内容)时,提示文字消失. 但是在不支持html5的低版本的浏览器中,placeholder属性是无效的,例如ie9及以下的ie浏览器不兼容这个属性.下面介绍placeholder兼容性的处理 在页面添加如下脚本 $(function() {   // 如果不支持placeholder,用jQuery来完成   if(!isSupport

placeholder的兼容性探索之路

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>placeholder</title> <style type="text/css"> .label{position: relative; display: inline-block; *zoom:1; *display: inline; *vertical-al

让Placeholder在IE中燥起来

网上有好多关于这方面解决兼容性问题的文章,很多招式,学会这一招,让你轻松搞定Placeholder的兼容性,叫我好人,拿走,不谢.... placeholder属性是HTML5 中为input添加的.在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示. 如 <input type="text" id="Title" class="so-input-d w270" placeholder=