Html5 学习系列(三)增强型表单标签
来源:互联网 发布:淘宝不能上传新图片 编辑:程序博客网 时间:2024/06/05 10:17
引言
在之前的HTML表单标签中,对于一些功能支持的不够好,比如:文本框提示信息(之前只能通过js和input的事件结合处理)、表单校验、日期选择控件、颜色选择控件、范围控件、进度条、标签跨表单等功能。当然这些东西我们都可以直接通过js和dom元素配合实现这些通用的功能。这些功能或者是标签都已经大量的使用在了现代的Web应用中,而这些公共性的东西在早期的HTML标准没有直接的标准支持,而在HTML5中,新标准直接把这些常用的基本的功能直接加入的新的表单标签中,真正把表单功能异常的强大,那就跟我走一下HTML5智能表单之旅吧!
由于最新版本的Opera浏览器对新型表单支持的最为完美,所以建议本blog或者以下示例请在Opera浏览器上打开.
HTML5新增加表单标签
新的标准中添加了很多输入型控件,比如:Number、URL、Email、Range、Color等。而他们都是以 input标签的type属性出场,那下面我一一简单介绍一下。[以下所有的例子请用Opera浏览器浏览]
1)只能输入数字的Number类型input标签
Html代码为:<input type="number" name="demoNumber" min="1" max="100" step="2"/>
运行效果:
注:此标签其实就是普通的input标签,只不过是type类型指向了number,标识当前标签接受数字类型输入.另外添加了四个属性.
name:属性大家很熟悉了用来标识表单提交时的key值
min:是表单标签新增加的属性标识当前输入框输入的最小值
max:那就是最大值了
step:是步长的意思,也就是在点击增大或者减小的时候的增加减少的步长
小结:min,max,step是表单标签中添加的新的属性。另外就是type又增加了一个新的number类型,接受数字输入。而之前我们要做到这样的效果只能通过js在失去焦点时候判断,控制起来不那么方便,现在一切都那么简单简洁。
2)新型Email类型input标签
Html代码:<input type="email" name="email" placeholder="请输入注册邮箱" />
运行效果:
注:在上面HTML代码中,相对于之前的标签,不同点:type="email"表示当前input标签接受一个邮箱的输入。另外就是:placeholder="请输入注册邮箱" 这个属性的功能,相信你看到此时的效果的时候你会感到非常想兴奋,而在之前实现此提示信息,需要监听一下文本框的blur事件,然后判断是否为空,为空再去给文本框赋值一个灰色的字体提示信息,而现在只需要一个简单属性指定就可以了,浏览器都帮我们实现了。
小结:当表单在提交前,此文本框会自动校验是否符合邮箱的正则表达式,另外placeholder属性带来的提示信息功能太强大了。
3)新型Url类型input标签
这里不再赘述了,跟Email类型input标签类似。只看一效果吧:
Html代码:<input type="url" placeholder="请输入网址" name="url" />
运行效果:
4)新型Tel类型input标签
Html代码:<input type="tel" placeholder="输入电话" name="phone"/>
运行效果:
5)新型range类型input标签
Html代码:<input type="range" min="0" max="50" step="5" name="rangedemo" value="0" />
运行效果:
此类型标签的加入,输入范围内的数据变得非常简单容易,而且非常标准,用户输入可感知体验非常好。另外此标签可以跟表单新增加的Output标签一块使用,达到一个联动的效果。看demo源码:
<
form
action
=
""
method
=
"POST"
id
=
"form1"
>
<
input
type
=
"range"
min
=
"0"
max
=
"50"
step
=
"5"
name
=
"rangedemo"
value
=
"0"
/>
<
output
onforminput
=
"value=rangedemo.value"
>0</
output
>
</
form
>
运行效果:
6)新的日期、时间、月份、星期input标签
相信你如果做过相关的Web项目开发,肯定会遇到相关的js日期控件。而一系列版本问题,使用不方便等问题将一去不复返,因为…看下面的标签吧:
Html代码:<input type="date" name="datedemo" />
运行效果:
还有其他的type:month(月) 、time、week、datetime-local、datetime。那赶紧实验一下吧。
7)颜色选择input标签
颜色选择器实现起来还是有点困难的,而现在一切都变得那么简单。且看代码:
Html代码:<input type="color"/>
运行效果:
8)input标签自动完成功能
如果您有一定的开发经验的话,肯定做过相关的自动完成或者输入提示功能。那这将不再那么复杂,简单几个标签就自动实现此功能,请看如下demo:
<
input
type
=
"text"
autocomplete
=
"on"
name
=
"demoAutoComplete"
list
=
"autoNames"
/>
<
datalist
id
=
"autoNames"
>
<
option
value
=
"飞龙天惊"
></
option
>
<
option
value
=
"厚德IT"
></
option
>
<
option
value
=
"Flydragon"
></
option
>
</
datalist
>
执行结果:
HTML5表单新增属性
Input标签新增加的特有属性
- 1)autofocus属性
demo:<input type="text" autofocus="autofocus"/> 此属性可以设置当前页面中input标签加载完毕后获得焦点。
- 2)max,min,step这些上面都介绍过了,都是跟数字相关。
- 3)placeholder:提示信息属性,上面有demo。
- 4)multiple:用于文件上传控件,设置此属性后,允许上传多个文件。
- 5)校验属性:设置了required 属性后预示着当前文本框在提交前必须有数据输入,而这一切都是由浏览器自动完成。
这跟使用Jq Validate的时候一样的爽。而且还添加了:pattern正则表达式的校验。
demo:input type="text" autofocus="autofocus" required pattern="\d+" />
- 6)另外一个比较大的改进就是增加了form属性,也就是说,任何一个标签都可以指定它所属于一个表单,而不是必须在<form></form>进行包裹了。
- 且看demo:<input type="text" form="demoForm" name="demo"/>
Form表单标签新增加属性
- 1)novalidate 属性规定在提交表单时不应该验证 form 或 input 域。
demo:<
form
action
=
""
method
=
"POST"
novalidate
=
"true"
></form>
2)autocomplete 属性规定 form 或 input 域应该拥有自动完成功能
。
综合性实例
<
fieldset
>
<
legend
>只能表单演示:请用最新Opera 浏览器</
legend
>
<
form
action
=
""
method
=
"POST"
id
=
"form1"
>
<
input
type
=
"text"
autofocus
=
"autofocus"
required
pattern
=
"\d+"
name
=
"auto"
placeholder
=
"必填项测试"
/>
<
input
type
=
"number"
name
=
"demoNumber"
min
=
"1"
max
=
"100"
step
=
"2"
/>
<
input
type
=
"email"
placeholder
=
"请输入邮箱"
name
=
"mail"
/>
<
input
type
=
"url"
name
=
"url"
placeholder
=
"输入正确的网址"
/>
<
br
/>
日期:<
input
type
=
"datetime"
name
=
"time"
/>
颜色:
<
input
type
=
"color"
name
=
"color"
/><
br
/>
<
br
/>
<
input
type
=
"range"
min
=
"0"
max
=
"50"
step
=
"5"
name
=
"rangedemo"
value
=
"0"
/>
<
output
onforminput
=
"value=rangedemo.value"
>0</
output
>
<
br
/>
<
input
type
=
"submit"
value
=
"提交表单"
/>
</
form
>
表单外的input标签:
<
input
type
=
"text"
form
=
"form1"
name
=
"demo"
/>
</
fieldset
>
执行结果:
由于部分属性不能正常提交到博客园后台,上一张图片加源码:
图片:
实际运行情况:
总结
在新版本的表单中的确添加了很多令人兴奋的功能。其实进步不是特别大,只不过是把之前的常用的功能,加入到了标准中来定义,然后浏览器帮我们实现了很多我们原先需要自己用js实现的一些功能罢了。但是对于开发者来说,这的确是很不错的一件事情。
本文来自深蓝色右手的博客,原文地址:http://www.cnblogs.com/fly_dragon/archive/2012/05/27/2519951.html
浏览器兼容测试
本文相对 原文 翻译的同时,内容有修改。
本文是《HTML5新的表单功能》系列的第一篇,主要介绍HTML5新增的表单控件。
第二篇 (已完成)将会介绍HTML5表单新特性(attributes)、新的输出机制、新的验证功能支持以及与表单相关的CSS3伪类新特性。
正文开始,首先介绍下本文对这些新表单控件的测试环境,如果一个控件不被某个浏览器支持,介绍该控件时就不提它。
浏览器兼容测试
本文测试环境:
平台 :Windows 7 旗舰版32位
浏览器具体版本(一回的本地环境)IE9IE9 Beta 9.0.7930.16406Chromechrome dev 10.0.642.2FirefoxFirefox 3.6.13Operaopera 11.00 (1156)Safarisafari 5.0.3(7533.19.4)新表单控件
表单是Web应用最主要的数据输入工具,随着用户数据越来越复杂,我们需要一套包含更多功能的表单元素,用于接收用户数据输入,这些表单元素不仅需要被HTML5定义支持,同时使用更简单、包含更高效的错误处理和验证功能。
<input type="number">
首先介绍下number类型的输入控件:
<input type="number" name="csser.com" ... >
它创建了一个用于输入数字项的特殊输入框,在支持的浏览器中,你会看到一个文本输入框,其右侧附带了一个微调控件用于增加或减少输入数字的数值。
支持的浏览器效果ChromeOpera<input type="range">
创建一个滑动控件从而允许选择一个范围内的数值,在以往这是一个复杂的、语义含糊的话题,但现在通过HTML5非常简单,只需要定义一个range类型的输入控件就可以了:
<input type="range" name="cssercom" ... >支持的浏览器效果ChromeOperaSafari
需要注意的是,默认,range输入不显示当前刻度的值以及range的范围。开发者可以通过Javascript借助output标签让当前值显示出来,完整代码如下:
<form> <input type="range" name="cssercom" min="10" max="30" step="2"> <output onforminput="value=cssercom.value"></output></form>
经过测试,发现Opera支持最好,可以显示当前值,其他浏览器并未显示出来。
<input type="date">和其它日期/时间控件
HTML5提供了一些用于日期/时间选择的控件。例如,飞机票/火车票的订票网站上经常会看到各种各样的日期选择框,这些控件通常都是用非语义的标签和大量Javascript代码编写而成的。让人激动的是,HTML5中只需要标准的简单方式就可以实现:
<input type="date" name="csserdate"><input type="time" name="cssertime">
上面的代码分别的创建了具有完整功能的日期选择控件和时间输入控件。
支持的浏览器效果ChromeOperaOpera的支持仍占优势。Chrome的日期选择并不会弹出选择提示,只支持鼠标滚轮或者手动输入。
不过HTML5替我们想的更周到,它还提供了以下与日期时间相关的控件类型:
- datetime:合并了日期和时间功能,允许即选择日期又输入时间。
- month:允许仅选择月份,如选择今天,则值为2011-01。
- week:允许你选择一周,通常格式为2011-W03,表示2011年第三周
<input type="color">
这个控件提供了一个日期选择器。经过CSSer测试,目前,该控件仅被Opera支持。
<input type="search">
搜索控件,可以看作是不同风格的文本输入控件。浏览器应该将搜索控件设置为特定于操作系统的搜索功能。除了纯粹美学方面的考虑,还可以在将来为搜索提供辅助技术或类似自动完成的功能提供接口和实现的可能性。search控件有点为未来预留搜索功能接口的味道。
<datalist>和input的list特性
目前为止,我们通常使用<select>和<option>元素创建下拉列表供用户选择。如果我们需要的不仅仅是创建一个可供用户选择的列表,同时我们还允许用户通过输入来完成呢?这需要通过繁琐的Javascript编程来实现,但是现在,通过HTML5提供的input的list属性绑定一个datalist元素,可以轻松的实现我们想要的功能:
<input type="text" list="csserData"><datalist id="csserData"> <option label="www.csser.com" value="csser"> <option label="www.popcg.com" value="popcg"> <option label="www.easejs.com" value="easejs"></datalist>
经过测试,该功能目前仅被Opera支持,效果如下:
<input type="tel">、<input type="email">和<input type="url">
顾名思义,这些控件类型涉及到电话号码、Email地址和url链接。它们在表现上都是一个文本输入框,但是客户端浏览器会对用户输入的文本进行校验。另外,一些移动设备上的浏览器通常会切换键盘的文字输入到上下文相关的输入选择。同时,提供这些明确的控件能方便将来的浏览器为其新增额外的功能,比如电子邮件地址、用户联系人的电话号码列表等的自动完成功能。
本文是《HTML5新的表单功能》系列的第一篇,主要介绍HTML5新增的表单控件。
第二篇 (已完成)将会介绍HTML5表单新特性(attributes)、新的输出机制、新的验证功能支持以及与表单相关的CSS3伪类新特性。
- Html5 学习系列(三)增强型表单标签
- Html5 学习系列(三)增强型表单标签
- H5基础(3)-HTML5增强型表单标签
- HTML5的学习(三)HTML5标签
- html5学习笔记(四)增强的表单
- Html5 学习系列(二)HTML5新增结构标签
- Html5 学习系列(二)HTML5新增结构标签
- HTML5总结系列(二)--新增表单标签及表单属性
- HTML5学习笔记之表单标签
- HTML5表单属性(三)
- SpringMVC学习系列(11) 之 表单标签
- SpringMVC学习系列(11) 之 表单标签
- SpringMVC学习系列(11) 之 表单标签
- SpringMVC学习系列(11) 之 表单标签
- SpringMVC学习系列(11) 之 表单标签
- SpringMVC学习系列(10) 之 表单标签
- SpringMVC学习系列(11) 之 表单标签
- SpringMVC学习系列(11) 之 表单标签
- 未能解决bug之java.io.IOException: Not in GZIP format
- Linq to sql:检测并发
- thrift安装
- poj 3680 Intervals
- Perl内置特殊变量
- Html5 学习系列(三)增强型表单标签
- 使用hash表加速寻找-POJ 3349
- js中setAttribute 的兼容性
- "Cannot declare member function ...to have static linkage"错误
- Mahout0.6-VectorDumper bug修复
- linux下各文件的作用
- 根据wsdl文件生成java代码
- POJ 2299 Ultra-QuickSort
- 线程属性pthread_attr_t简介