关于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的rem属性制作响应式页面布局的要点解析
May 24 HTML / CSS
CSS3教程:边框属性border的极致应用
Apr 02 HTML / CSS
CSS3中Animation属性的使用详解
Aug 06 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
Mar 05 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
Apr 04 HTML / CSS
HTML5中Canvas与SVG的画图原理比较
Jan 16 HTML / CSS
Web前端页面跳转并取到值
Apr 24 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
Jul 16 HTML / CSS
奇妙的 CSS shapes(CSS图形)
Apr 05 HTML / CSS
css实现文章分割线样式的多种方法总结
Apr 21 HTML / CSS
Canvas绘制像素风图片的示例代码
Sep 25 HTML / CSS
CSS三大特性继承性、层叠性和优先级详解
Jan 18 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二分查找二种实现示例
2014/03/12 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
python实现划词翻译
2020/04/23 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
python自动生成证件号的方法示例
2021/01/14 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
乡镇干部先进事迹材料
2014/02/03 职场文书
高中打架检讨书
2014/02/13 职场文书
体育专业求职信
2014/07/16 职场文书
户籍证明模板
2014/09/28 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
详解CSS3浏览器兼容
2022/12/24 HTML / CSS