html5 placeholder ie 不兼容问题 解决方案
解决HTML5 placeholder的方案
来源: 时间:2013-09-05 20:06:49 阅读数:11375
[导读] 使低版本浏览器支持Placeholder有很多方法,都不是很完美,或多或少有点问题,且有些原生支持的浏览器在获得焦点时会清空Placeholder提示。发现知乎网的解决方法不错,特记录下windows系统中以下浏览器测试通过
使低版本浏览器支持Placeholder有很多方法,都不是很完美,或多或少有点问题,且有些原生支持的浏览器在获得焦点时会清空Placeholder提示。发现知乎网的解决方法不错,特记录下
windows系统中以下浏览器测试通过:Google Chrome 18,Firefox 12,IE 9,IE 6,Opera 11.5。在android 4.0系统也测试了下,原生浏览器及Opera Mobile12基本通过,缺陷是获得焦点时会清空Placeholder提示。
jquery.placeholder.zhihu.js部分:
| 代码如下 | 复制代码 |
| /* * html5 placeholder pollfill * - 使用绝对定位内嵌层 * - 也适用于密码域 * 目标浏览器: IE 6~9, FF 3.5 ``` // 默认 $('input[placeholder]').placeholder() // autofocus 与 placeholder 搭配时,非 webkit 清空了提示文本,推荐 $('input[placeholder]').placeholder({ // 将删除原有 placehodler 属性,强制用 JS 实现替代 useNative: false, // focus 时不清除提示文本, keypress 有效字符时才清空 hideOnFocus: false, // 附加样式 style: { textShadow: 'none' } }) ``` */ (function ($) { var attr = 'placeholder', nativeSupported = attr in document.createElement('input') $.fn.placeholder = function (options) { return this.each(function () { var $input = $(this) if ( typeof options === 'string' ) { options = { text: options } } var opt = $.extend({ text : '', style : {}, namespace: 'placeholder', useNative: true, hideOnFocus: true }, options || {}) if ( !opt.text ) { opt.text = $input.attr(attr) } if (!opt.useNative) { $input.removeAttr(attr) }else if ( nativeSupported ) { // 仅改变文本 $input.attr(attr, opt.text) return } var width = $input.width(), height = $input.height() var box_style = ['marginTop', 'marginLeft', 'paddingTop', 'paddingLeft', 'paddingRight'] var show = function () { $layer.show() } var hide = function () { $layer.hide() } var is_empty = function () { return !$input.val() } var check = function () { is_empty() ? show() : hide() } var position = function () { var pos = $input.position() if (!opt.hideOnFocus) { // 按??藏的情况,需要移?庸?肆较袼 pos.left += 2 } $layer.css(pos) $.each(box_style, function (i, name) { $layer.css(name, $input.css(name)) }) } var layer_style = { color : 'gray', cursor : 'text', textAlign : 'left', position : 'absolute', fontSize : $input.css('fontSize'), fontFamily: $input.css('fontFamily'), display : is_empty() ? 'block' : 'none' } // create var layer_props = { text : opt.text, width : width, height: 'auto' } // 确保只绑定一次 var ns = '.' + opt.namespace, $layer = $input.data('layer' + ns) if (!$layer) { $input.data('layer' + ns, $layer = $('<div>', layer_props).appendTo($input.offsetParent()) ) } // activate $layer .css($.extend(layer_style, opt.style)) .unbind('click' + ns) .bind('click' + ns, function () { opt.hideOnFocus && hide() $input.focus() }) $input .unbind(ns) .bind('blur' + ns, check) if (opt.hideOnFocus) { $input.bind('focus' + ns, hide) }else{ $input.bind('keypress keydown' + ns, function(e) { var key = e.keyCode if (e.charCode || (key >= 65 && key <=90)) { hide() } }) .bind('keyup' + ns,check) } // 由于 ie 记住密码的特性,需要监听值改变 // ie9 不支持 jq bind 此事件 $input.get(0).onpropertychange = check position() check() }) } })(jQuery) |
|
html部分:
| 代码如下 | 复制代码 |
|
<!DOCTYPE html> |
|
html5 placeholder ie 不兼容问题 解决方案的更多相关文章
- 【转】HTML5移动端最新兼容问题解决方案
1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显 ...
- HTML5移动端最新兼容问题解决方案
1.安卓浏览器看背景图片,有些设备会模糊.用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢?经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网 ...
- IE8 不支持html5 placeholder的解决方案
IE8不支持html5 placeholder的解决方法. /** * jQuery EnPlaceholder plug * version 1.0 2014.07.01戈志刚 * by Frans ...
- (转)html5 Placeholder属性兼容IE6、7方法
使低版本浏览器支持Placeholder有很多方法,都不是很完美,或多或少有点问题,且有些原生支持的浏览器在获得焦点时会清空Placeholder提示.发现zhihu的解决方法不错,特记录下 wind ...
- HTML中的IE条件注释,让低版本IE也能正常运行HTML5+CSS3网站的3种解决方案
最近的项目中,因为需要兼容IE7,IE8,IE9,解研究了IE的条件注释,顺手写下来备忘. HTML中的IE条件注释 IE条件注释是一种特殊的HTML注释,这种注释只有IE5.0及以上版本才能理解. ...
- Cross-Browser HTML5 Placeholder Text
One of the nice enhancement in HTML5 web form is being able to add placeholder text to input fields. ...
- HTML5 placeholder(空白提示) 属性
原文地址:HTML5′s placeholder Attribute 演示地址: placeholder演示 原文日期: 2010年08月09日 翻译日期: 2013年8月6日 浏览器引入了许多的HT ...
- jquery remove()不兼容问题解决方案
jquery remove()不兼容问题解决方案 CreationTime--2018年7月27日10点19分 Author:Marydon 1.情景展示 点击关闭,将这个div移除掉 源码展示 ...
- javascript window.showModalDialog不兼容goole解决方案
window.showModalDialog不兼容goole解决方案 一.弹框方案: 1.window.open; 2.window.showModalDialog; 3.div制作窗口:(本节忽略) ...
随机推荐
- net reactor加密源码保软件安全-net reactor使用教程
上一次介绍用 Xenocode Postbuild for .NET 混淆加密源代码确保软件安全,本篇将讨论用 Eziriz .NET Reactor 混淆加密软件源代码,为从未用过该软件加密的用户分 ...
- python中import和from...import区别
在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中 ...
- 关于Git的网址
25个 Git 进阶技巧:[http://www.imooc.com/article/1089] Git版本控制与工作流:[http://www.imooc.com/article/1068]
- My Construct
1.构造函数定义 类中的构造函数用来初始化一个类.构造函数为公有类型,无返回值,用来从类实例中访问类时初始化此类的私有变量. 2.代码 public class UseConstruct { publ ...
- 理解Condition的用法
这个示例中BoundedBuffer是一个固定长度的集合,这个在其put操作时,如果发现长度已经达到最大长度,那么会等待notFull信号,如果得到notFull信号会像集合中添加元素,并发出notE ...
- AOP的基本概念
1)aspect(切面):实现了cross-cutting功能,是针对切面的模块.最常见的是logging模块,这样,程序按功能被分为好几层,如果按传统的继承的话,商业模型继承日志模块的话根本没有什么 ...
- CRM 2016 自定义对话框
项目背景: CRM表单在操作时会有一些提示,或者交互的对话框. 直接 使用js的alert 和 confirm,网格上有些不协调. 以前在项目中使用过jquery 的,但是CRM官方不建议使用jqu ...
- 廖雪峰JavaScript学习摘录
一. 1.语法基础: (1)特别注意相等运算符==.JavaScript在设计时,有两种比较运算符: 第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果: 第二种是===比较 ...
- <网页web工作面试题>
磨刀不误砍柴工,在百忙之余的中午休息时,我录入一下我的面试题,把基础的知识重新温故,稳固! 1.块级元素和行内元素都有哪些? 答:块级元素:div,form,fildset等 行内元素:hr,p,fo ...
- ThinkPHP3.2.3 跨域访问
其他程序调用tp项目的action时需要进行跨域设置,在tp项目根目录下添加crossdomain.xml文件. 文件内容: <?xml version="1.0"?> ...