两种方法基于jQuery实现IE浏览器兼容placeholder效果

2020-05-19 07:38:18易采站长站整理

$(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输入框的背景图,初始时获得焦点同时加载背景图;

背景图如下:

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

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

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

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

此方法的缺点是:需要为每一个提示文字不同的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下显示效果:

获得焦点时:

失去焦点时:

有输入时:

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