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制作窗口:(本节忽略) ...
随机推荐
- 转:linux lsof命令详解
简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...
- 远程连接Oracle时出现ORA-01034 和ORA-27101 的解决办法
服务器本地连接自身没有问题,但远程客户端连接时报错,远程客户端使用tnsping也没有问题. cmd->tnsping 192.168.56.101:1521/ora11gR2 tnsping命 ...
- 四种方式实现SQLServer 分页查询
SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...
- SparkSQL(源码阅读三)
额,没忍住,想完全了解sparksql,毕竟一直在用嘛,想一次性搞清楚它,所以今天再多看点好了~ 曾几何时,有一个叫做shark的东西,它改了hive的源码...突然有一天,spark Sql突然出现 ...
- 在Ubuntu下进行MongoDB安装步骤
一. 在Ubuntu下最傻瓜的步骤(以下都在root用户下进行操作): 1.运行"apt-get install mongo" 如果遇到找不到安装包的话运行"apt-ge ...
- php三维数组去重
假设叫数组 $my_array; // 新建一个空的数组. $tmp_array = array(); $new_array = array(); // 1. 循环出所有的行. ( $val 就是某个 ...
- JS获取地址栏参数的方法
1. window.location.href 2.正则方法 function getUrlParam(name) { var reg = new RegExp("(^|&)&quo ...
- 采用CAS原理构建单点登录
企业的信息化过程是一个循序渐进的过程,在企业各个业务网站逐步建设的过程中,根据各种业务信息水平的需要构建了相应的应用系统,由于这些应用系统一般是在不同的时期开发完成的,各应用系统由于功能侧重.设计方法 ...
- [C#常用代码]类库中读取解决方案web.Config字符串
对于类库里读取解决方案web.config文件里字符串的方法一.读取键值对的方法:1.添加引用using System.Configuration;2.web.Config配置节<appSett ...
- [手机取证] “神器”IP-BOX的一些问题
网上最近传的纷纷扬扬的iOS密码破解神器IP-BOX,很多人感兴趣,作为一个该产品的老用户,来破除一下迷信,顺便做个普及~ Q1:这东西好神奇,是不是所有都能破解? A1:支持简单密码的穷举,有条件的 ...