jquery html() ie兼容,两种方法基于jQuery实现IE浏览器兼容placeholder效果

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

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

获得焦点前:

299c844aa61944cf8c5102feedeb2943.png

获得焦点时:

cfbbc8492d4f72adddbedd53bafc112d.png

偏偏IE11要搞点特殊:

获得焦点前:

29db896500a39ce2bd128096b2e0c8be.png

获得焦点时:

74822df564a2b52d1a7c93e0c5c551f2.png

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

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

方法一

效果预览:

http://jsfiddle.net/L57b25yr/embedded/result/

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

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

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

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

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

HTML:

CSS:

.phcolor{ color:#999;}

JS:

$(function(){

//判断浏览器是否支持placeholder属性

supportPlaceholder='placeholder'in document.createElement('input'),

placeholder=function(input){

var text = input.attr('placeholder'),

defaultValue = input.defaultValue;

if(!defaultValue){

input.val(text).addClass("phcolor");

}

input.focus(function(){

if(input.val() == text){

$(this).val("");

}

});

input.blur(function(){

if(input.val() == ""){

$(this).val(text).addClass("phcolor");

}

});

//输入的字符不为灰色

input.keydown(function(){

$(this).removeClass("phcolor");

});

};

//当浏览器不支持placeholder属性时,调用placeholder函数

if(!supportPlaceholder){

$('input').each(function(){

text = $(this).attr("placeholder");

if($(this).attr("type") == "text"){

placeholder($(this));

}

});

}

});

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

方法二

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

背景图如下:

11a22783ae67758bd9fc21d451fb5b42.png

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

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

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

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

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

HTML代码不变。

CSS:

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

JS:

$(function(){

//判断浏览器是否支持placeholder属性

supportPlaceholder='placeholder' in document.createElement('input');

if(!supportPlaceholder){

//初始状态添加背景图片

$("#uname").attr("class","phbg");

//初始状态获得焦点

$("#uname").focus;

function destyle(){

if($("#uname").val() != ""){

$("#uname").removeClass("phbg");

}else{

$("#uname").attr("class","phbg");

}

}

//当输入框为空时,添加背景图片;有值时去掉背景图片

destyle();

$("#uname").keyup(function(){

//当输入框有按键输入同时输入框不为空时,去掉背景图片;有按键输入同时为空时(删除字符),添加背景图片

destyle();

});

$("#uname").keydown(function(){

//keydown事件可以在按键按下的第一时间去掉背景图片

$("#uname").removeClass("phbg");

});

}

});

此方法至此结束。

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

获得焦点时:

248bfedf6a1c344162327fc68b8c09fa.png

失去焦点时:

85928be4eefa38b4209cda57a4a6e9aa.png

有输入时:

b763c1982ce8d2cab31c795a4e769495.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现搜索栏placeholder滚动播放效果,可以使用CSS3动画和JavaScript实现。 首先,使用CSS3动画来实现placeholder的滚动效果,可以使用以下代码: ```css .search-input { animation: placeholder 10s linear infinite; } @keyframes placeholder { 0% { opacity: 1; } 20% { opacity: 0; } 40% { content: "Search for..."; opacity: 1; } 60% { content: "Find what you need..."; opacity: 1; } 80% { content: "Explore your interests..."; opacity: 1; } 100% { content: "Try me now..."; opacity: 1; } } ``` 上述代码,使用了`animation`属性来定义动画效果,`placeholder`是动画名称,`10s`表示动画持续时间为10秒,`linear`表示动画速度为匀速,`infinite`表示动画无限循环。 接下来,使用JavaScript来实现placeholder的动态替换,可以使用以下代码: ```javascript const placeholder = document.querySelector('.search-input').getAttribute('placeholder'); const phrases = ['Search for...', 'Find what you need...', 'Explore your interests...', 'Try me now...']; let i = 0; setInterval(() => { document.querySelector('.search-input').setAttribute('placeholder', phrases[i]); i = (i + 1) % phrases.length; }, 10000); ``` 上述代码,使用`setInterval`函数来定时替换placeholder内容,`10000`表示每隔10秒替换一次。在替换时,将`phrases`数组的内容依次赋值给placeholder,使用取余的方式实现数组循环。 以上就是实现搜索栏placeholder滚动播放效果方法,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值