关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法


Posted in HTML / CSS onJanuary 27, 2016

placeholder 属性是 HTML5 中的新属性,俗名叫“占位符”,功能类似于输入框在得到焦点时,时面的默认值会变成空白,当失去焦点时又会显示默认的文本,我想大家一定使用 js/jquery制作过这样的效果。目前只有在Mozilla Firefox 3.7+、Apple Safari 4+、Google Chrome 4+、Opera11+等现代浏览器支持。”
placeholder属性是HTML5 中为input添加的。在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示。
实例:

复制代码
代码如下:

<input type="text" name="userName" placeholder="请输入用户名">

placeholder操作起来非常方便,提高了开发效率,同时在高版本浏览器中用户体验也很好,所以本人很喜欢用这个属性。
然而,在IE9以下版本浏览器就失效了,并且IE10+支持placeholder属性,它的表现与其它浏览器也不一致
•IE10+里鼠标点击时(获取焦点)placeholder文本消失
•Firefox/Chrome/Safari点击不消失,而是键盘输入时文本消失
那么作为一名开发人员,是否应该去克服解决这个问题呢。目前网上也一堆类似解决方案,大致实现思路分为两种:
1.(方式一)使用input的value作为显示文本,模拟灰色样式,focus让$("[placeholder]").val()=="",blur时$("[placeholder]").val(this.defaultValue);
2.(方式二)不使用value,添加一个额外的标签(span)到body里然后绝对定位覆盖到input上面。
在这里因第一种方式实现起来,占用了value且验证时需要做额外的判断,那么个人建议使用第二种方式。
首先,判断当前浏览器是否支持placeholder属性:

复制代码
代码如下:

function placeholderSupport() {
return 'placeholder' in document.createElement('input');
}

上关键代码:

复制代码
代码如下:

/*
*placeholder兼容ie9以下 author:高丰鸣 add 2016-1-27
*/
$(function(){
if(!placeholderSupport()){ // 判断浏览器是否支持 placeholder
$(document).ready(function(){
//默认遍历循环添加placeholder
$('[placeholder]').each(function(){
$(this).parent().append("<span class='placeholder'>"+$(this).attr('placeholder')+"</span>");
})
$('[placeholder]').blur(function(){
if($(this).val()!=""){ //如果当前值不为空,隐藏placeholder
$(this).parent().find('span.placeholder').hide();
}
else{
$(this).parent().find('span.placeholder').show();
}
})
});
}
});

以上内容给大家介绍了关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法 的相关内容,希望对大家有所帮助。

HTML / CSS 相关文章推荐
CSS3实现任意图片lowpoly动画效果实例
May 11 HTML / CSS
纯CSS3实现手风琴风格菜单具体步骤
May 06 HTML / CSS
一款利用纯css3实现的超炫3D表单的实例教程
Dec 01 HTML / CSS
css3的transform造成z-index无效解决方案
Dec 04 HTML / CSS
CSS3实现超酷的黑猫警长首页
Apr 26 HTML / CSS
使用CSS3中的calc()属性来以算式表达尺寸数值
Jun 06 HTML / CSS
CSS3实现彩色进度条动画的示例
Oct 29 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
Jan 09 HTML / CSS
HTML5调用手机摄像头拍照的实现思路及代码
Jun 15 HTML / CSS
基于CSS3画一个iPhone
Apr 21 HTML / CSS
六个好看实用的 HTML + CSS 后台登录入口页面
Apr 28 HTML / CSS
VW、VH适配移动端的解决方案与常见问题
May 21 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
Jan 27 #HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 #HTML / CSS
Html5实现二维码扫描并解析
Jan 20 #HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
Jan 20 #HTML / CSS
HTML5 History API 实现无刷新跳转
Jan 11 #HTML / CSS
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
Jan 11 #HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
Jan 07 #HTML / CSS
You might like
php利用cookie实现自动登录的方法
2014/12/10 PHP
PHP生成树的方法
2015/07/28 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
php微信支付接口开发程序
2016/08/02 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
js实现的切换面板实例代码
2013/06/17 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
JS实现打字游戏
2019/12/17 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
python 中的int()函数怎么用
2017/10/17 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
Pycharm调试程序技巧小结
2020/08/08 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
采购助理岗位职责
2014/02/16 职场文书
活动总结模板
2014/05/09 职场文书
小学生手册家长意见
2015/06/03 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python
Python中的xlrd模块使用整理
2021/06/15 Python