`
seavers
  • 浏览: 173260 次
  • 来自: ...
社区版块
存档分类
最新评论

javascript模拟html5新增特性 - placeholder属性

阅读更多
placeholder属性是html5的新增属性,当输入框为空时, 可以提示一些信息, 非常不错的功能

1. placeholder支持情况:
     a) 已经支持: ie 9+  firefox 4.0+  chrome等
     b) 需要模拟 :  ie6 ie7 ie8 firefox3.6

2. placeholder
     a) 内容为空时, 内容显示为placeholder内容, 样式为color:#999 , 且垂直居中显示
     b) 内容不为空, 无特殊变化, 原有placeholder样式, 需清除

3. 模拟placeholder, 要求满足( 只考虑 input)
     a) 当页面显示后, 如果数据为空, 则显示为placeholder状态
     b) 当点击input后, 清除placeholder,样式恢复文本样式
     c) 当input离开焦点后, 根据内容来显示placeholder状态
     d) 当placeholder状态时,刷新页面后, 也应该是placeholder状态
     e) 当有js执行脚本后, 且变更input值后, 重置placeholder状态
     f) 当表单reset后, 也需要重置placeholder状态
     g) 当表单提交后, 当为placeholder状态时,提交的参数应该为空

4. 注意点
     a) firefox 3.6 ,需考虑 3.d)点, 需监停 window.onunload
     b) ie下, 第3.e)点,需监控 onpropertychange事件,比较复杂
     c) firefox , 需监控 oninput 事件, 也比较复杂
     d) form.reset事件, onreset是在修改input值前调用的, 也比较难重置状态

5. 判断浏览器是否原生支持placeholder :  "placeholder" in document.createElement("input")
6. 简单实现, 可以监停focus/blur(focusin/focusout), submit/unload事件
7. 本文发表在http://seavers.iteye.com/ 本文未经同意,谢绝转载

例:

KISSY 实现:

input.placeholder {color:#999}


<script src="http://a.tbcdn.cn/s/kissy/1.1.6/kissy-min.js"></script>
<script>
//本代码发布在 http://seavers.iteye.com/ , 未经同意,谢绝转载
//模拟了placeholder 80%的功能
(function() {
	var S=KISSY, Dom = S.DOM, Event = S.Event;

	S.namespace("HTML5");
	S.HTML5.placeholder = {
		support  : "placeholder" in document.createElement("input"), 
		activate : (function() {
			function _showPlaceholder(el, className, value) {
				if (!Dom.hasClass(el, className) && !el.value) {
					el.value = value;
					Dom.addClass(el, className);
				}
			}
			
			function _hidePlaceholder(el, className, value) {
				if (Dom.hasClass(el, className)) {
					el.value = value;
					Dom.removeClass(el, className);
				}
			}
			
			function _activatePlaceholder(selector) {
				var ATTR = "placeholder", CLASS = "placeholder";
				
				S.each(S.query(selector), function(el){
					var TIP = el.getAttribute(ATTR);
					if (!TIP) return ;
					
					Event.on(el.form, 'submit', function(ev) {
						_hidePlaceholder(el, CLASS, "");
					});
					Event.on(window, 'unload', function(ev) {	//解决firefox3.6刷新问题
						_hidePlaceholder(el, CLASS, "");
					});
					Event.on(el, 'focusin', function(ev){
						_hidePlaceholder(el, CLASS, "");
					});
					Event.on(el, 'focusout', function(ev){
						_showPlaceholder(el, CLASS, TIP);
					});
					_showPlaceholder(el, CLASS, TIP);
				});
			}
			
			return _activatePlaceholder;
		})()
	};
	
	//如果有原生的placeholder,使用原生,否则使用模拟的
	if (!S.HTML5.placeholder.support) {
		S.HTML5.placeholder.activate('INPUT');
	}
})();

</script>
















分享到:
评论

相关推荐

    placeholder(HTML 5) IE 兼容插件

    HTML5的`&lt;input&gt;`元素新增了一个非常实用的特性,即`placeholder`属性。这个属性允许我们在输入框中设置提示文字,当用户聚焦输入框时,提示文字会自动消失,提供给用户输入信息的空间。然而,这个功能在早期版本的...

    jQuery实现HTML5 placeholder效果实例

    你一定知道 HTML5新增的 placeholder 属性吧?不知道的也没关系。输入框有默认文本是,常需要这样一个效果,点击让默认文本消失,失去焦点后让默认文本显示。 今天分享一段jQuery代码,模拟 placeholder 效果。 ...

    1+X认证Web前端开发初级模拟试题及答案6套.docx

    根据提供的文档信息,我们可以归纳出一系列与Web前端开发相关的知识点,包括HTML标签使用、CSS样式控制、HTML5新特性等。接下来将详细解释这些知识点。 ### 特殊字符表示 在HTML中,特殊字符需要使用特定的编码来...

    html5 demo

    HTML5对表单元素进行了改进,如新增了日期选择器、搜索框、邮箱输入等类型,以及placeholder属性和form验证功能,提高了用户体验。 9. **Geolocation定位服务**: 通过Geolocation API,网站可以获取用户的地理...

    html5课件包含每章作业

    - 表单控制增强:新表单元素如、、、等,以及属性如required、placeholder、pattern等,提高了表单输入的用户体验和验证效率。 - 视频和音频元素:和元素的引入,使网页可以直接内嵌多媒体内容,无需依赖Flash等...

    传智播客Html5课程笔记

    `html5shiv.js`是一个JavaScript库,它通过JS模拟的方式让旧版浏览器支持Html5的语义化标签。 ```html &lt;!-- 条件注释,仅IE能够识别 --&gt; &lt;!--[if lte IE 8]&gt; &lt;script src="html5shiv.js"&gt;&lt;/script&gt; &lt;![endif]--&gt; ``...

    纯css3实现iphone表单风格.zip

    同时,HTML5的placeholder属性允许我们在输入框内设置提示文本,增强用户体验。在iPhone风格的表单设计中,可能会用到这些新特性来模拟iOS设备上的输入体验。 jQuery是一个流行的JavaScript库,它简化了DOM操作、...

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

    Placeholder属性是HTML5中input元素新增的一个属性,用于定义表单输入字段的提示信息(即在输入框中显示灰色文字作为提示,当用户开始输入时消失)。由于IE早期版本不支持placeholder属性,所以需要使用jQuery来实现...

    超酷CSS3发光搜索框表单提交.zip

    在搜索框设计中,我们可能会用到`&lt;form&gt;`、`&lt;input&gt;`和`&lt;button&gt;`等元素,以及`type="search"`和`placeholder`属性,它们提供了对搜索框的基本功能支持。此外,HTML5的`&lt;form&gt;`元素可以配合`action`和`method`属性来...

    HTML5与浏览器支持.docx

    html5shiv通过JavaScript模拟这些新元素,使它们在旧版IE中能够正常显示和布局。 总的来说,HTML5为现代网页开发提供了丰富的工具和功能,提高了用户体验和开发者的工作效率。尽管浏览器之间的兼容性问题仍然存在,...

    2018最新BAT 《前端必考面试》.pdf

    - **兼容问题处理**:为了确保HTML5新标签在旧浏览器中也能正常显示,可以使用polyfill库来模拟这些新标签的功能,或者通过JavaScript动态创建相应的元素。 #### 6. 语义化的理解 - **定义**:语义化意味着使用...

    小米官网首页的实现(静态)

    2. **表单元素**:HTML5增加了新的表单输入类型,如color、date、datetime、email、month、number、range、search、tel、time、url、week,以及placeholder属性,提升用户体验。 二、CSS3基础 1. **选择器**:CSS3...

    select下拉框可编辑输入框

    3. **CSS模拟**:通过CSS的`position`属性和`z-index`控制,将`&lt;select&gt;`和`&lt;input&gt;`重叠显示,通过JavaScript控制它们的显示和隐藏,模拟出可编辑下拉框的效果。 ### 关键技术点 在实现过程中,需要注意以下关键...

    BAT前端面试题大全

    `:checked`, `:indeterminate`, `:valid`, `:invalid`, `:in-range`, `:out-of-range`, `:required`, `:optional`, `:read-only`, `:read-write`, `:placeholder-shown`, `:autofill`, `:autofilled`, `:fullscreen`...

    js实现input密码框提示信息的方法(附html5实现方法)

    关于`placeholder`属性,这是一个HTML5新增的属性,用于在文本框中显示灰色的提示文字,当用户开始输入内容时,提示文字会自动消失。虽然现代浏览器对`placeholder`属性都有良好的支持,但在需要兼容老版本浏览器的...

    现场捕获

    4. **HTML5新特性**:HTML5引入了更多新的元素和功能,如`&lt;canvas&gt;`用于图形绘制,`&lt;video&gt;`和`&lt;audio&gt;`支持多媒体播放,`&lt;form&gt;`的新增属性如`required`和`placeholder`增强表单处理。 5. **HTML与CSS的结合**:...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    本书介绍了ASP.NET 2.0中的每个新增特性和功能,以便读者把这些新技术应用于实践。.. 本书主要内容 ● 服务器控件的概念及其在ASP.NET开发中的主导作用 ● 使用新的Master页面特性创建模板化的ASP.NET页面 ● ...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

Global site tag (gtag.js) - Google Analytics