HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注


Posted in HTML / CSS onJanuary 31, 2013

在HTML5增强的元素中,最值得关注的就是表单元素。在HTML5中,表单已经做了重大的修整,一些以前需要通过JavaScript编码实现的功能现在无需编码就可轻松实现。在开始讨论之前,需要注意一点:

在HTML5中,表单控件是可以处于其所属的一个或多个表单的外部的。所以,表单控件像fieldset,label,input这些都加入了form属性,用于标识表单控件所属的表单。

在HTML5中

1. form元素自身增加了两个新的属性:autocomplete和novalidate。autocomplete属性用于启用“下拉建议列表”功能,novalidate属性用于关闭表单验证功能,这在测试时会很有用。

2. fieldset元素增加了三个新属性:disable、name和form。disable属性用于禁用fieldset,name属性用于设置fieldset的名称,form属性的值是fieldset所属的一个或多个表单的ID,这个前面也说了,当fieldset被置于表单的外部时,你必须设置该fieldset标签的form属性,这样fieldset就可以正确地与一个或多个表单关联起来。

3. label元素除for属性外,只增加了form属性。这里值得一提的是for属性,我以前还真没注意过。for属性用于指定label附属的表单控件,这样点击这个label时会让附属的表单控件获得焦点,比如:

复制代码
代码如下:

<form action="demo_form.asp" id="form1">
<label for="name">Click Me</label><input id="name" type="text"></input>
<input type="submit" value="Submit" />
</form>

点击"Click Me",则后面的输入框会获得焦点。

4. input元素引入了一些新的类型与属性,增强了表单的可用性。这些新的输入类型,用于对数据进行组织和归类,非常有用,遗憾的是并没有哪一个浏览器能很好的支持所有的这些类型。
除了原来button,text,submit,checkbox,radio,select,password的类型,HTML5加入了下列新的input类型:

颜色:color
各种日期:date, datetime, datetime-local, month, week, time
电子邮件:email
数字:number
范围:range
搜索:search
电话:tel
URL类型:url

可以运行下面的例子来查看不同浏览器的支持情况:

复制代码
代码如下:

<form action="demo_form.asp">
Select your favorite color: <input type="color" name="favcolor" />
Birthday: <input type="date" name="bday" />
Birthday (date and time): <input type="datetime" name="bdaytime" />
Birthday (date and time): <input type="datetime-local" name="bdaytime" />
Birthday (month and year): <input type="month" name="bdaymonth" />
Select a time: <input type="time" name="usr_time" />
Select a week: <input type="week" name="week_year" />
Quantity (between 1 and 5): <input type="number" name="quantity" min="1" max="5" />
Quantity(between 1 and 10): <input type="range" name="points" min="1" max="10" />
Search Google: <input type="search" name="googlesearch" />
Telephone: <input type="tel" name="usrtel" />
Add your homepage: <input type="url" name="homepage" />
E-mail: <input type="email" name="usremail" />
<input src="submitbutton.png" type="submit" />
</form>

下面这些是新增加的input属性:
autocomplete:自动显示以前输入过的信息,取值"on"或者"off"。适用于text, search, url, tel, email, password, datepickers, range, and color类型。

autofocus:页面加载完成后自动获取到焦点。
form:指定input所属的form,可以是多个。
formaction:指定form提交后处理这个input的页面(URL)或文件。

formenctype:指定form提交后数据如何编码。
formmethod:指定发送form数据的HTTP方法,会覆盖相应form的HTTP方法。
formnovalidate:提交前不检查数据的有效性。
formtarget:指定在那个地方显示form提交后response的内容。
height, width:输入框长和宽,只适用于image类型。 
max,min:输入值的最大值和最小值。适用于有意义的number,range, 日期类型。

multiple:是否允许输入多个值,适用于email和file类型。
pattern:指定验证输入值的正则表达式,适用于text,search,url,tel,email,password。
placeholder:输入前的提示信息,适用于text,search,url,tel,email,password。
required:是否是必填项,如果不填必填项,则表单不能提交,适用于text, search, url, tel, email, password, date pickers, number, checkbox, radio, 和file类型。
step:输入自动增长时的步长值,适用于number, range, date, datetime, datetime-local, month, time和week类型。
list:输入项的候选列表,需要和datalist元素配合使用,list属性可用在这些类型上:text、search、url、tel、email、date、number、range和color,目测在FireFox上有效。看一个小例子:

复制代码
代码如下:

<fieldset>
<legend> Favorites </legend>
<p>
<label>
<input type="text" name="favorites" list="options">
<datalist id="options">
<option value="A">
<option value="B">
<option value="C">
</datalist>
</label>
</p>
</fieldset>

下面的例子尝试使用了各个属性,可以运行在不同的浏览器下查看实际效果:
复制代码
代码如下:

<form action="demo_form.asp">
E-mail: <input type="email" name="email" autocomplete="on" />
Image: <input type="image" src="img_submit.gif" alt="Submit" width="48" height="48"/>
Enter a date before 1980-01-01:<input type="date" name="bday" max="1979-12-31">
Enter a date after 2000-01-01:<input type="date" name="bday" min="2000-01-02">
Quantity (between 1 and 5):<input type="number" name="quantity" min="1" max="5" />
Select images: <input type="file" name="img" multiple="multiple" />
Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code" />
First Name: <input type="text" name="fname" placeholder="First name" />
Username: <input type="text" name="usrname" required="required" />
Number: <input type="number" name="points" step="3" />

<input type="submit" />
<input type="submit" formaction="demo_admin.asp" value="Submit as admin" />
<input type="submit" formenctype="multipart/form-data" value="Submit as Multipart/form-data" />
<input type="submit" formmethod="post" formaction="demo_post.asp" value="Submit using POST" />
<input type="submit" formnovalidate="formnovalidate" value="Submit without validation" />
<input type="submit" formtarget="_blank" value="Submit to a new window" />
</form>
<form action="demo_form.asp" id="form1">
First name: <input type="text" name="fname" />
<input type="submit" value="Submit" />
</form>
Last name: <input type="text" name="lname" form="form1" />


建议:虽然并不是所有的浏览器都支持全部的类型,但是还是鼓励大家使用这些新类型,因为即使浏览器不支持,只不过是会退化成简单的text输入框而已。

实用参考:
W3C的教程:http://www.w3schools.com/html5/default.asp
HTML5官方指导:http://dev.w3.org/html5/html-author/
相当不错的一个指导网站:http://html5doctor.com/
HTML5中文教程:http://www.html5china.com/
一个不错的前端博客:http://www.pjhome.net/default.asp?cateID=1
JS操作表单的相关知识:http://www.cnblogs.com/xugang/archive/2010/08/12/1798005.html

HTML / CSS 相关文章推荐
CSS3截取字符串实例代码【推荐】
Jun 07 HTML / CSS
收集的7个CSS3代码生成工具
Apr 17 HTML / CSS
css3圆角样式分享自定义按钮样式
Dec 27 HTML / CSS
CSS3实现曲线阴影和翘边阴影
May 03 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
Jan 17 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
Jan 14 HTML / CSS
使用css如何制作时间ICON方法实践
Nov 12 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
Sep 10 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
Sep 10 HTML / CSS
CSS实现五种常用的2D转换
Dec 06 HTML / CSS
Html5获取用户当前位置的几种方式
Jan 18 HTML / CSS
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
Jan 31 #HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
Jan 31 #HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
Jan 31 #HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
Jan 31 #HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
Jan 31 #HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
Jan 31 #HTML / CSS
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
Jan 30 #HTML / CSS
You might like
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
JS实现图片手风琴效果
2020/04/17 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
对Django外键关系的描述
2019/07/26 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
火车来了教学反思
2014/02/11 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
基于Go语言构建RESTful API服务
2021/07/25 Golang
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android