博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery 两种方法实现IE10以下浏览器的placeholder效果
阅读量:4324 次
发布时间:2019-06-06

本文共 3482 字,大约阅读时间需要 11 分钟。

/*** jQuery版本:jQuery-1.8.3.min.js** 测试的浏览器:IE8,IETester下的IE6-IE9 ** Author:博客园小dee*/

placeholder是HTML5<input>的属性之一,在不同的浏览器( 支持HTML5的现代浏览器 )中会有略微不同的显示效果:

在Chrome( v31.0.1650.63 m)、Firefox( v21.0 )、360安全( v6.3 极速模式 )中,输入栏获得焦点后,提示文字并不消失,如图( Chrome ):

获得焦点前:

获得焦点时:

 

偏偏IE11要搞点特殊:

获得焦点前:

获得焦点时:

也就是说获得焦点时提示的文字会消失。

 

非现代浏览器( 例如 IE6-IE9 )是不支持placeholder属性的。现在用jQuery来使这些非现代浏览器也同样能能实现placeholder的显示效果,第一种方法实现的是IE11这种效果,也就是输入框获得焦点时提示文字会消失;如果要想获得类似Chrome的效果,即输入框获得焦点时提示文字并不消失,可以使用第二种方法。

 

方法一

效果预览:

思路是,首先判断浏览器是否支持placeholder属性,如果不支持的话,就遍历所有input输入框,获取placeholder属性的值填充进输入框作为提示信息,同时字体设置成灰色。

当输入框获得焦点( focus )同时输入框内文字等于设置的提示信息时,就把输入框内清空;

当输入框失去焦点( blur )同时输入框内文字为空时,再把获取的placeholder属性的值填充进输入框作为提示信息,同时字体设置成灰色;

当输入框内有输入( keydown )时,此时输入框内的提示信息已经由focus事件清除,此时只需要把字体再恢复成黑色即可。

此方法的缺点是,不适用于加载完DOM时即获得焦点的输入框,因为在用户的角度,加载完页面时看到的获得焦点的那个输入框,它的提示文字是看不到的。

HTML:

CSS:

.phcolor{
color:#999;}

JS:

1 $(function(){    2  3     //判断浏览器是否支持placeholder属性 4     supportPlaceholder='placeholder'in document.createElement('input'), 5  6     placeholder=function(input){ 7  8         var text = input.attr('placeholder'), 9         defaultValue = input.defaultValue;10 11         if(!defaultValue){12 13             input.val(text).addClass("phcolor");14         }15 16         input.focus(function(){17 18             if(input.val() == text){19     20                 $(this).val("");21             }22         });23 24  25         input.blur(function(){26 27             if(input.val() == ""){28             29                 $(this).val(text).addClass("phcolor");30             }31         });32 33         //输入的字符不为灰色34         input.keydown(function(){35   36             $(this).removeClass("phcolor");37         });38     };39 40     //当浏览器不支持placeholder属性时,调用placeholder函数41     if(!supportPlaceholder){42 43         $('input').each(function(){44 45             text = $(this).attr("placeholder");46 47             if($(this).attr("type") == "text"){48 49                 placeholder($(this));50             }51         });52     }53 54 });

经过测试可以达到IE11placeholder的显示效果。

 

方法二

此方法的思路是做一张含有提示文字的图片作为input输入框的背景图,初始时获得焦点同时加载背景图;

背景图如下:

当输入框不为空时,去掉背景图;

当输入框为空时,加载背景图;

当用户键盘按键且输入框不为空( 输入字符 )时,去掉背景图;

当用户键盘按键且输入框为空( 删除字符 )时,加载背景图。

此方法的缺点是:需要为每一个提示文字不同的input制作背景图片,并且设置input的样式。

HTML代码不变。

CSS:

.phbg{
background:url(img/bg.jpg) 0 0 no-repeat;}

JS:

1 $(function(){    2  3       //判断浏览器是否支持placeholder属性 4       supportPlaceholder='placeholder' in document.createElement('input'); 5  6       if(!supportPlaceholder){ 7  8          //初始状态添加背景图片 9          $("#uname").attr("class","phbg");10          //初始状态获得焦点11          $("#uname").focus;12 13          function destyle(){14          15             if($("#uname").val() != ""){16                 17                 $("#uname").removeClass("phbg");18             }else{19             20                 $("#uname").attr("class","phbg");21              }22          }23          24          //当输入框为空时,添加背景图片;有值时去掉背景图片25          destyle();26 27          $("#uname").keyup(function(){28 29             //当输入框有按键输入同时输入框不为空时,去掉背景图片;有按键输入同时为空时(删除字符),添加背景图片30             destyle();31          });32 33          $("#uname").keydown(function(){34          35             //keydown事件可以在按键按下的第一时间去掉背景图片36             $("#uname").removeClass("phbg");37          });38       }39 });

此方法至此结束。

此方法在IETester的IE8下显示效果:

获得焦点时:

失去焦点时:

有输入时:

 

如果有朋友有更好的方法,欢迎交流讨论。

 

 

作者:
出处:  
说明:作者写博目的是记录开发过程,积累经验,便于以后工作参考。
如需转载,请在文章页面保留此说明并且给出原文链接。谢谢!

 

转载于:https://www.cnblogs.com/dee0912/p/3977760.html

你可能感兴趣的文章
经典排序——希尔排序
查看>>
团队编程项目作业2-团队编程项目代码设计规范
查看>>
英特尔公司将停止910GL、915GL和915PL芯片组的生产
查看>>
Maven配置
查看>>
HttpServletRequest /HttpServletResponse
查看>>
SAM4E单片机之旅——24、使用DSP库求向量数量积
查看>>
从远程库克隆库
查看>>
codeforces Unusual Product
查看>>
hdu4348 - To the moon 可持久化线段树 区间修改 离线处理
查看>>
正则表达式的搜索和替换
查看>>
个人项目:WC
查看>>
地鼠的困境SSL1333 最大匹配
查看>>
flume+elasticsearch+kibana遇到的坑
查看>>
【MM系列】在SAP里查看数据的方法
查看>>
C#——winform
查看>>
CSS3 transform制作的漂亮的滚动式导航
查看>>
《小强升职记——时间管理故事书》读书笔记
查看>>
Alpha 冲刺(3/10)
查看>>
Kaldi中的Chain模型
查看>>
spring中的ResourceBundleMessageSource使用和测试示例
查看>>