关于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实现简单的checkbox复选框和radio单选框
Nov 05 HTML / CSS
CSS3中使用RGBA设置透明度的示例
Aug 04 HTML / CSS
CSS3中currentColor关键字的妙用
Feb 27 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 HTML / CSS
CSS3下的渐变文字效果实现示例
Mar 02 HTML / CSS
css3 边框、背景、文本效果的实现代码
Mar 21 HTML / CSS
涂鸦板简单实现 Html5编写属于自己的画画板
Jul 05 HTML / CSS
如何利用input事件来监听移动端的输入
Apr 15 HTML / CSS
HTML5 canvas基本绘图之图形变换
Jun 27 HTML / CSS
HTML5无刷新改变当前url的代码
Mar 15 HTML / CSS
html5 Canvas实现图片旋转的示例
Jan 15 HTML / CSS
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
Sep 23 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 代码规范小结
2012/03/08 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
基于Python log 的正确打开方式
2018/04/28 Python
python 实现UTC时间加减的方法
2018/12/31 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
乡镇庆八一活动方案
2014/02/02 职场文书
护理专业自荐信范文
2014/02/26 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
图文详解nginx日志切割的实现
2022/01/18 Servers