兩種方法基于jQuery實(shí)現(xiàn)IE瀏覽器兼容placeholder效果
placeholder是HTML5<input>的屬性之一,在不同的瀏覽器( 支持HTML5的現(xiàn)代瀏覽器 )中會(huì)有略微不同的顯示效果:
在Chrome( v31.0.1650.63 m)、Firefox( v21.0 )、360安全( v6.3 極速模式 )中,輸入欄獲得焦點(diǎn)后,提示文字并不消失,如圖( Chrome ):
獲得焦點(diǎn)前:

獲得焦點(diǎn)時(shí):

偏偏I(xiàn)E11要搞點(diǎn)特殊:
獲得焦點(diǎn)前:

獲得焦點(diǎn)時(shí):

也就是說獲得焦點(diǎn)時(shí)提示的文字會(huì)消失。
非現(xiàn)代瀏覽器( 例如 IE6-IE9 )是不支持placeholder屬性的。現(xiàn)在用jQuery來使這些非現(xiàn)代瀏覽器也同樣能能實(shí)現(xiàn)placeholder的顯示效果,第一種方法實(shí)現(xiàn)的是IE11這種效果,也就是輸入框獲得焦點(diǎn)時(shí)提示文字會(huì)消失;如果要想獲得類似Chrome的效果,即輸入框獲得焦點(diǎn)時(shí)提示文字并不消失,可以使用第二種方法。
方法一
效果預(yù)覽:
http://jsfiddle.net/L57b25yr/embedded/result/
思路是,首先判斷瀏覽器是否支持placeholder屬性,如果不支持的話,就遍歷所有input輸入框,獲取placeholder屬性的值填充進(jìn)輸入框作為提示信息,同時(shí)字體設(shè)置成灰色。
當(dāng)輸入框獲得焦點(diǎn)( focus )同時(shí)輸入框內(nèi)文字等于設(shè)置的提示信息時(shí),就把輸入框內(nèi)清空;
當(dāng)輸入框失去焦點(diǎn)( blur )同時(shí)輸入框內(nèi)文字為空時(shí),再把獲取的placeholder屬性的值填充進(jìn)輸入框作為提示信息,同時(shí)字體設(shè)置成灰色;
當(dāng)輸入框內(nèi)有輸入( keydown )時(shí),此時(shí)輸入框內(nèi)的提示信息已經(jīng)由focus事件清除,此時(shí)只需要把字體再恢復(fù)成黑色即可。
此方法的缺點(diǎn)是,不適用于加載完DOM時(shí)即獲得焦點(diǎn)的輸入框,因?yàn)樵谟脩舻慕嵌龋虞d完頁面時(shí)看到的獲得焦點(diǎn)的那個(gè)輸入框,它的提示文字是看不到的。
HTML:
<input type="text" id="uname" name="uname" placeholder="請(qǐng)輸入用戶名"/>
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");
});
};
//當(dāng)瀏覽器不支持placeholder屬性時(shí),調(diào)用placeholder函數(shù)
if(!supportPlaceholder){
$('input').each(function(){
text = $(this).attr("placeholder");
if($(this).attr("type") == "text"){
placeholder($(this));
}
});
}
});
經(jīng)過測(cè)試可以達(dá)到IE11placeholder的顯示效果。
方法二
此方法的思路是做一張含有提示文字的圖片作為input輸入框的背景圖,初始時(shí)獲得焦點(diǎn)同時(shí)加載背景圖;
背景圖如下:

當(dāng)輸入框不為空時(shí),去掉背景圖;
當(dāng)輸入框?yàn)榭諘r(shí),加載背景圖;
當(dāng)用戶鍵盤按鍵且輸入框不為空( 輸入字符 )時(shí),去掉背景圖;
當(dāng)用戶鍵盤按鍵且輸入框?yàn)榭? 刪除字符 )時(shí),加載背景圖。
此方法的缺點(diǎn)是:需要為每一個(gè)提示文字不同的input制作背景圖片,并且設(shè)置input的樣式。
HTML代碼不變。
CSS:
.phbg{ background:url(img/bg.jpg) 0 0 no-repeat;}
JS:
$(function(){
//判斷瀏覽器是否支持placeholder屬性
supportPlaceholder='placeholder' in document.createElement('input');
if(!supportPlaceholder){
//初始狀態(tài)添加背景圖片
$("#uname").attr("class","phbg");
//初始狀態(tài)獲得焦點(diǎn)
$("#uname").focus;
function destyle(){
if($("#uname").val() != ""){
$("#uname").removeClass("phbg");
}else{
$("#uname").attr("class","phbg");
}
}
//當(dāng)輸入框?yàn)榭諘r(shí),添加背景圖片;有值時(shí)去掉背景圖片
destyle();
$("#uname").keyup(function(){
//當(dāng)輸入框有按鍵輸入同時(shí)輸入框不為空時(shí),去掉背景圖片;有按鍵輸入同時(shí)為空時(shí)(刪除字符),添加背景圖片
destyle();
});
$("#uname").keydown(function(){
//keydown事件可以在按鍵按下的第一時(shí)間去掉背景圖片
$("#uname").removeClass("phbg");
});
}
});
此方法至此結(jié)束。
此方法在IETester的IE8下顯示效果:
獲得焦點(diǎn)時(shí):

失去焦點(diǎn)時(shí):

有輸入時(shí):

如果有朋友有更好的方法,歡迎交流討論。
- js兼容的placeholder屬性詳解
- js模仿html5 placeholder適應(yīng)于不支持的瀏覽器
- javascript 文本框水印/占位符(watermark/placeholder)實(shí)現(xiàn)方法
- 讓低版本瀏覽器支持input的placeholder屬性(js方法)
- 使用jQuery快速解決input中placeholder值在ie中無法支持的問題
- IE下支持文本框和密碼框placeholder效果的JQuery插件分享
- 基于jQuery的讓非HTML5瀏覽器支持placeholder屬性的代碼
- jQuery實(shí)現(xiàn)的placeholder效果完整實(shí)例
- jQuery實(shí)現(xiàn)的一個(gè)自定義Placeholder屬性插件
- jQuery插件EnPlaceholder實(shí)現(xiàn)輸入框提示文字
- 基于JS實(shí)現(xiàn)html中placeholder屬性提示文字效果示例
相關(guān)文章
jQuery 實(shí)現(xiàn)批量提交表格多行數(shù)據(jù)的方法
今天小編就為大家分享一篇jQuery 實(shí)現(xiàn)批量提交表格多行數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
jQuery實(shí)現(xiàn)消息滾動(dòng)播放效果
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)消息滾動(dòng)播放效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
jquery創(chuàng)建div 實(shí)現(xiàn)代碼
有時(shí)候我們需要?jiǎng)討B(tài)創(chuàng)建一個(gè)div下面是具體的實(shí)現(xiàn)代碼,大家只要熟悉了jquery的一些基本用法就能輕松的實(shí)現(xiàn)。2009-04-04
jQuery實(shí)現(xiàn)仿美橙互聯(lián)兩級(jí)導(dǎo)航菜單效果完整實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)仿美橙互聯(lián)兩級(jí)導(dǎo)航菜單效果,以完整實(shí)例形式分析了jQuery響應(yīng)鼠標(biāo)事件實(shí)現(xiàn)針對(duì)頁面元素的遍歷及樣式的動(dòng)態(tài)操作技巧,需要的朋友可以參考下2015-09-09
基于jQuery實(shí)現(xiàn)自動(dòng)輪播旋轉(zhuǎn)木馬特效
這篇文章主要介紹了基于jQuery實(shí)現(xiàn)自動(dòng)輪播旋轉(zhuǎn)木馬特效,圖片輪播效果特別適合做產(chǎn)品展示,感興趣的小伙伴可以參考下。2015-11-11

