当前位置:首页 前端开发 正文

不支持 HTML5 Placeholder属性的浏览器上实现Placeholder

2013年01月07日 | 作者: 米豆网 - 1000seo | 分类: 前端开发 | 

HTML5对Web Form做了许多增强,比如input新增的type类型、Form Validation等。Placeholder是HTML5新增的另一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失。以前要实现这效果都是用JavaScript来控制才能实现:

<input id=”t1″ type=”text” placeholder=”请输入文字” />

由于placeholder是个新增属性,目前只有少数浏览器支持,如何检测浏览器是否支持它呢?(使用特性检测)

var _support=(function() {
return ‘placeholder’ in document.createElement(‘input’);
})();
如果返回true说明支持HTML5 Placeholder,不需要处理,如果false说明浏览器还不支持此属性,需要自己来实现.
下面是完整代码:

var PlaceHolder = {
_support: (function() {
return ‘placeholder’ in document.createElement(‘input’);
})(),

//提示文字的样式,需要在页面中其他位置定义
//className: ‘PlaceHolder_style’,
classText:”color:#666″,
init: function(obj) {
var inputs=obj;
if (!PlaceHolder._support) {
//未对textarea处理,需要的自己加上
if(!inputs){
inputs = document.getElementsByTagName(‘input’);
}
PlaceHolder.create(inputs);
}
},
create: function(inputs) {
var input;
if (!inputs.length) {
inputs = [inputs];
}
for (var i = 0, length = inputs.length; i <length; i++) {
input = inputs[i];
if (!PlaceHolder._support && input.attributes && input.attributes.placeholder) {
PlaceHolder._setValue(input);
PlaceHolder.addEvent(input,’focus’, function(e) {
if (this.value === this.attributes.placeholder.nodeValue) {
this.value = ”;
this.className = ”;

}
});
PlaceHolder.addEvent(input,’blur’, function(e) {
if (this.value === ”) {
PlaceHolder._setValue(this);
}
});
}
}
},

_setValue: function(input) {
input.value = input.attributes.placeholder.nodeValue;
//input.className = PlaceHolder.className;
if(!+”\v1″){
input.style.setAttribute(“cssText”,PlaceHolder.classText);
}else{
input.setAttribute(“style”,PlaceHolder.classText);
}
},
addEvent:function (obj,eventtype,listener){
if(obj.addEventListener){
obj.addEventListener(eventtype,listener,false)
return true
}else if(obj.attachEvent){
obj[‘e’+eventtype+listener] = listener;
obj[eventtype+listener]=function(){
obj[‘e’+eventtype+ listener](window.event);
}
obj.attachEvent(‘on’+eventtype,obj[eventtype+listener]);
return true ;
}
return false;
}
};

如果需要对所有的的input增加Placeholder只需要这样写:PlaceHolder.init();
如果需要指定的input增加Placeholder只需要这样写:PlaceHolder.init(document.getElementById(“t1″));
完整代码下载
目前代码只支持input type=text ,其他类型继续完善中

本文章由 米豆网 - 1000seo 于2013年01月07日发布在前端开发分类下,您可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
+复制链接 转载请注明:不支持 HTML5 Placeholder属性的浏览器上实现Placeholder-米豆网
关键字:,

好文章就要一起分享!

更多

发表评论

你的大名(必填)

你的邮箱(必填)

你的网站(选填)

评论内容(必填)

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif