codetc - 网站开发技术 首页 前端 查看内容

JQuery实现IE兼容Html5的placeholder属性

2014-12-29 19:05| 发布者: CODETC| 查看: 2043| 评论: 0

HTML5对Web Form做了许多的增强,比如input新增的type类型、Form Validation等。其中Placeholder是HTML5新增的一个属性,当input或者textarea设置了该属性后,文本框内将把Placeholder的值作为提示的内容显示,当文本框获得焦点时与内容被改变时,提示的文字消失。在没有placeholder之前要实现这个效果都是用JavaScript来控制实现的, 目前firefox、google chrome等浏览器皆对其支持 , 唯独IE不支持


例如: <input id="t1" type="text" placeholder="请输入文字" />

但当上面的语句在IE中的时候,placeholder属性就没有任何做用,下面我们使用一个超强的让IE下支持placeholder的属性插件,同时也兼容其他不支持placeholder的浏览器,代码如下:


<script language="javascript" type="text/javascript">
$(document).ready(function(){ 
	var doc=document,
	inputs=doc.getElementsByTagName('input'),
	supportPlaceholder='placeholder'in doc.createElement('input'),

	placeholder=function(input){
		var text=input.getAttribute('placeholder'),
		defaultValue=input.defaultValue;
		if(defaultValue==''){
			input.value=text
		}
		input.onfocus=function(){
			if(input.value===text)
			{
				this.value=''
			}
		};

		input.onblur=function(){
			if(input.value===''){
				this.value=text
			}
		}
	};

	if(!supportPlaceholder){
		for(var i=0,len=inputs.length;i<len;i++){
			var input=inputs[i],
			text=input.getAttribute('placeholder');
			if(input.type==='text'&&text){
				placeholder(input)
			}
		}
	}
});
</script>

代码很简单,直接把代码复制下来,保存成一个js文件引用即可,不用再做任何处理,超级便利!

PS: 这样做的确能让IE的Input显示placeholder属性一样的效果,但是当表单提交时,如果出现input没有填入任何值的话,那么它的值会自动默认用placeholder的值填进value里面,这是因为上面的JS代码其实是把placeholder属性的值赋给了value,然后通过 onblur 和 onfocus 来模拟真正的 placeholder 属性的。 所以在使用以上代码的时候,提交表单时要注意判断!不然会出现错误。

文章来源 CODETC,欢迎分享,转载请注明地址: http://www.codetc.com/article-108-1.html

最新评论

 作为游客发表评论,请输入您的昵称

返回顶部