本文相对 原文 翻译的同时,内容有修改。

本文是《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" ... >

它创建了一个用于输入数字项的特殊输入框,在支持的浏览器中,你会看到一个文本输入框,其右侧附带了一个微调控件用于增加或减少输入数字的数值。

支持的浏览器效果Chromehtml5-type-number-chromeOperahtml5-type-number-opera

<input type="range">

创建一个滑动控件从而允许选择一个范围内的数值,在以往这是一个复杂的、语义含糊的话题,但现在通过HTML5非常简单,只需要定义一个range类型的输入控件就可以了:

<input type="range" name="cssercom" ... >

支持的浏览器效果Chromehtml5-type-range-chromeOperahtml5-type-range-operaSafarihtml5-type-range-safari

需要注意的是,默认,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">

上面的代码分别的创建了具有完整功能的日期选择控件和时间输入控件。

支持的浏览器效果Chromehtml5-type-date-time-chromeOperahtml5-type-date-time-opera

Opera的支持仍占优势。Chrome的日期选择并不会弹出选择提示,只支持鼠标滚轮或者手动输入。

不过HTML5替我们想的更周到,它还提供了以下与日期时间相关的控件类型:

  • datetime:合并了日期和时间功能,允许即选择日期又输入时间。
  • month:允许仅选择月份,如选择今天,则值为2011-01。
  • week:允许你选择一周,通常格式为2011-W03,表示2011年第三周

<input type="color">

这个控件提供了一个日期选择器。经过CSSer测试,目前,该控件仅被Opera支持。

html5-type-color-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支持,效果如下:

html5-datalist-list-opera

<input type="tel">、<input type="email">和<input type="url">

顾名思义,这些控件类型涉及到电话号码、Email地址和url链接。它们在表现上都是一个文本输入框,但是客户端浏览器会对用户输入的文本进行校验。另外,一些移动设备上的浏览器通常会切换键盘的文字输入到上下文相关的输入选择。同时,提供这些明确的控件能方便将来的浏览器为其新增额外的功能,比如电子邮件地址、用户联系人的电话号码列表等的自动完成功能。

本文是《HTML5新的表单功能》系列的第一篇,主要介绍HTML5新增的表单控件。

第二篇 (已完成)将会介绍HTML5表单新特性(attributes)、新的输出机制、新的验证功能支持以及与表单相关的CSS3伪类新特性。