`

js模仿html5的placeholder,适应于不支持的浏览器

阅读更多

 

js模仿html5的placeholder,适应于不支持的浏览器

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

 

(function(){ 
	//判断是否支持placeholder 
	function isPlaceholer(){ 
		var input = document.createElement('input'); 
		return "placeholder" in input; 
	} 
	//不支持的代码 
	if(!isPlaceholer()){ 
		//创建一个类 
		function Placeholder(obj){ 
			this.input = obj; 
			this.label = document.createElement('label'); 
			this.label.innerHTML = obj.getAttribute('placeholder'); 
			this.label.style.cssText = 'position:absolute; text-indent:4px;color:#999999; font-size:12px;'; 
			if(obj.value != ''){ 
				this.label.style.display = 'none'; 
			} 
			this.init(); 
		} 
		Placeholder.prototype = { 
			//取位置 
			getxy : function(obj){ 
				var left, top; 
				if(document.documentElement.getBoundingClientRect){ 
					var html = document.documentElement, 
					body = document.body, 
					pos = obj.getBoundingClientRect(), 
					st = html.scrollTop || body.scrollTop, 
					sl = html.scrollLeft || body.scrollLeft, 
					ct = html.clientTop || body.clientTop, 
					cl = html.clientLeft || body.clientLeft; 
					left = pos.left + sl - cl; 
					top = pos.top + st - ct; 
				} 
				else{ 
					while(obj){ 
						left += obj.offsetLeft; 
						top += obj.offsetTop; 
						obj = obj.offsetParent; 
					} 
				} 
				return{ 
					left: left, 
					top : top 
				} 
			}, 
			//取宽高 
			getwh : function(obj){ 
				return { 
					w : obj.offsetWidth, 
					h : obj.offsetHeight 
				} 
			}, 
			//添加宽高值方法 
			setStyles : function(obj,styles){ 
				for(var p in styles){ 
					obj.style[p] = styles[p]+'px'; 
				} 
			}, 
			init : function(){ 
				var label = this.label, 
				input = this.input, 
				xy = this.getxy(input), 
				wh = this.getwh(input); 
				this.setStyles(label, {'width':wh.w, 'height':wh.h, 'lineHeight':20, 'left':xy.left, 'top':xy.top}); 
				document.body.appendChild(label); 
				label.onclick = function(){ 
					this.style.display = "none"; 
					input.focus(); 
				} 
				input.onfocus = function(){ 
					label.style.display = "none"; 
				}; 
				input.onblur = function(){ 
					if(this.value == ""){
						label.style.display = "block"; 
					} 
				}; 
			} 
		} 
		var inpColl = document.getElementsByTagName('input'), 
		textColl = document.getElementsByTagName('textarea'); 
		//html集合转化为数组 
		function toArray(coll){ 
			for(var i = 0, a = [], len = coll.length; i < len; i++){ 
				a[i] = coll[i]; 
			} 
			return a; 
		} 
		var inpArr = toArray(inpColl), 
		textArr = toArray(textColl), 
		placeholderArr = inpArr.concat(textArr); 
		for (var i = 0; i < placeholderArr.length; i++){ 
			if (placeholderArr[i].getAttribute('placeholder')){ 
				new Placeholder(placeholderArr[i]); 
			} 
		} 
	} 
})()
  

 

 

 

使用:放在一个js文件里面,在页面引用即可。

 

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

蕃薯耀 2014年6月23日 11:14:29 星期一

 

 

 

1
1
分享到:
评论

相关推荐

    js模仿html5 placeholder适应于不支持的浏览器

    以上代码完成了在不支持`placeholder`的浏览器上模拟HTML5`placeholder`的效果。这种方法确保了无论用户使用哪种浏览器,都能看到与HTML5原生`placeholder`相似的提示文本。请注意,实际应用中可能需要考虑更多的...

    JS实现页面查找Ctrl+F

    通过这些步骤,我们可以实现一个基本的JavaScript页面查找功能,模仿浏览器的Ctrl+F行为。在实际项目中,可能还需要考虑性能优化、错误处理、兼容性等问题。记得在`JS实现页面查找.htm`文件中查看具体实现细节,以...

    HTML5简洁精美的前端网站

    2. **多媒体支持**:HTML5提供了原生的音频()和视频()标签,不再依赖Flash等外部插件,简化了多媒体元素的嵌入,同时也支持跨平台播放。 3. **Canvas绘图**:HTML5的元素提供了一个画布,通过JavaScript可以进行...

    JavaScript模仿百度搜索框输入文字删除特效源码.zip

    这个压缩包"JavaScript模仿百度搜索框输入文字删除特效源码.zip"包含了实现这一功能的代码资源,主要涉及JavaScript、HTML和CSS等技术。以下是关于这一特效的详细知识点: 1. **HTML结构**: - 搜索框通常由`...

    模仿百度搜索框

    6. **跨浏览器兼容性**:考虑到不同的浏览器对某些CSS属性和JS特性支持程度不同,需要进行兼容性测试。 7. **用户体验**:添加合适的提示信息,如placeholder文本,以及合理的键盘焦点管理,提高用户体验。 8. **...

    仿163邮箱登录页面

    【仿163邮箱登录页面】是一个常见的前端开发练习,主要目标是模仿163邮箱的登录界面,以便学习和掌握网页布局、样式设计以及交互实现等技能。在这个项目中,我们将关注三个主要方面:HTML结构(div标签)、CSS样式...

    flot-7.zip_FlashVml_Flot

    它利用 HTML5 的 canvas 元素来绘制图形,对于那些不支持 canvas 的浏览器(如旧版的 Internet Explorer),Flot 还提供了一个名为 FlashVML 的备选方案,确保了跨平台的兼容性。本文将深入探讨 Flot 的核心特性、...

    移动端日期时间选择器

    "iosselect"控件就是这样一个解决方案,它是一个基于JavaScript的库,旨在为移动端浏览器提供类似iOS原生日期时间选择器的效果。 iosselect控件的设计理念是模仿苹果设备上的日期和时间选择器,以提供一致且友好的...

    移动端模拟数字键盘,保留两位小数,div模拟光标,div模拟input

    还可以添加placeholder属性,模仿input的占位符效果。 5. **事件处理**:JavaScript是实现这些功能的关键。需要编写事件处理器来响应用户的点击、触摸或键盘事件,更新div中的内容,同时处理光标移动和数值格式化。...

    图片延迟加载的实现代码(模仿懒惰)

    - 使用Intersection Observer API,这是一个现代浏览器原生支持的API,可以更精确地检测元素是否进入视口,无需依赖第三方库。 - 考虑预加载关键图片,比如首屏或重要图片,以确保用户第一时间看到完整内容。 - 对于...

    google-homepage:Google主页实验“ The Odin Project”

    DOCTYPE html&gt;`:这是HTML5文档类型的声明,告诉浏览器使用哪种HTML版本来解析页面。 2. `&lt;html&gt;`标签:整个HTML文档的根元素。 3. `&lt;head&gt;`:包含元数据,如页面标题(`&lt;title&gt;`),这将在浏览器标签页上显示。 4. ...

    14种CSS3炫酷表单input输入框美化效果

    9. **自定义滚动条**:在支持的浏览器中,可以使用`::-webkit-scrollbar`和`::-webkit-scrollbar-thumb`等选择器,对输入框内的滚动条进行美化。 10. **输入框填充**:使用`padding`属性可以调整输入框内文字与边框...

    Google-search-page:创建 Google 搜索页面

    DOCTYPE html&gt;`开头,这声明了文档类型为HTML5。接着,我们使用`&lt;html&gt;`标签作为整个HTML文档的根元素: ```html &lt;!DOCTYPE html&gt; &lt;html&gt; 我的Google搜索页面 &lt;!-- 页面内容将放在这里 --&gt; &lt;/html&gt; ``` 在...

    谷歌主页

    5. **布局与样式**:HTML本身不处理页面的布局和样式,但我们可以使用CSS(层叠样式表)来控制。通过`&lt;style&gt;`标签或外部链接的`.css`文件,可以定义颜色、字体、边距等。谷歌主页的特点是简洁、干净,所以CSS会强调...

    google-homepage

    在本项目"google-homepage"中,你的任务是构建一个前端页面,模仿著名的Google主页。这是一个极好的起点,尤其对于初次接触实际项目的新手来说,它可以帮助你掌握基础的HTML语言,同时提升网页布局和设计的理解。...

    vue项目实现多语言切换的思路

    - **浏览器翻译局限**:如Chrome的Google翻译无法处理动态渲染内容、输入框的placeholder,且可能破坏Vue的响应式机制。 3. **解决方案** - **放弃浏览器翻译**:由于Google翻译的局限性,不建议直接依赖浏览器的...

Global site tag (gtag.js) - Google Analytics