【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果
2015-04-07 17:17
1056 查看
placeholder 是 html5 新增加的属性,主要提供一种提示(hint),用于描述输入域所期待的值。该提示会在输入字段为空时显示,并会在字段获得焦点时消失。placeholder 属性适用于以下类型的 input 标签:text, search, url, telephone, email 以及 password。
我们先看下在谷歌浏览器中的效果,如图所示:
获得焦点时:
输入字段:
因为是 html5 属性,自然低版本的浏览器比如 ie6-8 不兼容。下面就介绍下如何在低版本浏览器中显示以上效果,话不多说直接上代码。
html:
placeholder.js:
实现原理:首先过滤下浏览器,非 ie 浏览器并且支持 placeholder 属性就用 placeholder,ie 浏览器则用 span 代替 placeholder 文本内容,通过样式定位在 input 上方,同时监听 input 输入框值的变化来判断显示或隐藏 span。
我们来看下 ie6 浏览器中的效果:
获得焦点时:
输入字段:
可以看到和谷歌浏览器的效果是一致的,唯一不足的就是文字没有居中,可以通过 css 进行修改。
我们先看下在谷歌浏览器中的效果,如图所示:
获得焦点时:
输入字段:
因为是 html5 属性,自然低版本的浏览器比如 ie6-8 不兼容。下面就介绍下如何在低版本浏览器中显示以上效果,话不多说直接上代码。
html:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta name="renderer" content="webkit"/> <meta name="keywords" content=""/> <meta name="description" content=""/> <title>基于 jquery 实现 ie 浏览器兼容 placeholder 效果</title> <style> *{margin:0;padding:0;} .txt{position:relative;font-size:12px;margin:10px;} .txt input{border:1px solid #ccc;height:30px;line-height:30px;padding:0 10px;width:200px;} .txt .txt-tip{color:#999;position:absolute;left:10px;top:0;height:32px;line-height:34px;} </style> </head> <body> <div class="txt"> <input type="text" value=""/> </div> </body> </html> <script src="js/jquery.min.js"></script> <script src="js/placeholder.js"></script> <script> $(function(){ var $input = $('.txt input'); initPlaceholder($input, '请输入内容', 'txt-tip'); }); </script>
placeholder.js:
function initPlaceholder($input, msg, classname){ var isIE = !!window.ActiveXObject || 'ActiveXObject' in window; var isPlaceholder = 'placeholder' in document.createElement('input'); if(isPlaceholder && !isIE){ $input.attr('placeholder', msg); }else{ var $tip = $('<span class="' + classname + '">' + msg + '</span>'); $input.after($tip); $.data($input[0], 'tip', $tip); if($input.val() != ''){ hidePHTip($input); } dealPHTip($input, $tip); } } function hidePHTip($input){ var $tip = $.data($input[0], 'tip'); if($tip){ $tip.hide(); } } function dealPHTip($input, $tip){ var _deal = function(){ var val = $input.val(); if(val == ''){ $tip.show(); }else{ $tip.hide(); } }; $tip.click(function(){ $input.focus(); }); $input.on('input propertychange', function(){ clearTimeout(timeout); var timeout = setTimeout(_deal, 0); }); }
实现原理:首先过滤下浏览器,非 ie 浏览器并且支持 placeholder 属性就用 placeholder,ie 浏览器则用 span 代替 placeholder 文本内容,通过样式定位在 input 上方,同时监听 input 输入框值的变化来判断显示或隐藏 span。
我们来看下 ie6 浏览器中的效果:
获得焦点时:
输入字段:
可以看到和谷歌浏览器的效果是一致的,唯一不足的就是文字没有居中,可以通过 css 进行修改。
相关文章推荐
- 【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果
- 两种方法基于jQuery实现IE浏览器兼容placeholder效果
- 两种方法基于jQuery实现IE浏览器兼容placeholder效果
- 两种方法基于jQuery实现IE浏览器兼容placeholder效果
- 两种方法基于jQuery实现IE浏览器兼容placeholder效果【转】
- 两种方法基于jQuery实现IE浏览器兼容placeholder效果
- jQuery+css实现的时钟效果(兼容各浏览器)
- jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
- jQuery+css实现的时钟效果(兼容各浏览器)
- IE下实现placeholder效果的jquery插件
- jQuery圆角插件,实现兼容ie、ff的圆角效果
- 基于jQuery,实现ie placeholder的兼容性
- jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
- jquery下拉菜单效果(超简洁实用,兼容IE和firefox等主流浏览器)
- 用js实现的图片在浏览器里面来回滚动效果 <兼容ie和ff>
- jquery实现简单的拖拽效果,兼容所有浏览器(二)
- Javascript实现整站黑白效果(兼容IE/FF等浏览器)
- js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器) 转
- js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器)
- jQuery 两种方法实现IE10以下浏览器的placeholder效果