`
askme
  • 浏览: 57180 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用HTML5构建下一代的Web Form

    博客分类:
  • Web
阅读更多
HTML5 是由 WHATWG (Web Hypertext Application Technology Working Group) 发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。
相关厂商内容

前言

HTML语言作为如今编程最为广泛的语言,具有易用、快捷、多浏览平台兼容等特点,但是随着时代的进步,HTML的标准却停滞不前,这一次还在不断开发中的HTML5标准的更新可以说给这门标记语言带来了新的生命力。本文将着重讨论HTML5中的Web Forms 2.0, 即表单的部分。

表单是网页中常见的控件(集)。小到网站注册登录,大到一个企业的数据管理系统,都基本上有表单的身影。表单之所以如此重要,主要是因为它担负大量的用户和网页后台数据更新交互的任务。Web开发人员,对于网页表单可以说又爱又恨,爱的是它方便的收集、组织数据的功能,恨的是它的功能很大程度上也就仅此而已。一些在最终网站用户看起来稀松平常的功能,比如说输入类型检查、表单校验、错误提示等等,开发人员无不需要花费大量精力利用 JavaScript和DOM编程来满足这些天然所需的功能点,而随着Ajax的流行,出现的一些JavaScript的工具库,比如Dojo, YUI等都提供了方便的JavaScript Widget或者API来减轻开发人员的负担。
HTML5的表单新特性

HTML5 Web Forms 2.0是对目前Web表单的全面提升,它在保持了简便易用的特性的同时,增加了许多内置的控件或者控件属性来满足用户的需求,并且同时减少了开发人员的编程。在我看来,HTML5 主要在以下几个方面对目前的Web表单做了改进:

    * 新的控件类型
          o 还在为类型检查犯愁吗,还在为那一长串看不太明白的检验输入的正则表达式而苦恼吗,HTML5提供的一系列新的控件将天然的具备类型检查的功能。比如说URL输入框,Email输入框等。

            <input type="url"></input>
            <input type="email"></input>

          o 当然还有非常重要的日期输入框,要知道使用JavaScript和CSS来“手工”制作一个日期输入框还是非常花功夫的,类似Dojo,YUI这样的类库也无不在这个widget上面大做文章。

            <input type="date"></input>

          o 作为我痛苦记忆的一部分,我经常记得我们开发人员要为一个select下拉别表动态的添加非常多的选项,这些选项大多数都是来自数据库,比如说国家、省市列表等等。这个事情非常繁琐。HTML5将支持data属性,为select控件外联数据源!

            <select data="http://domain/getmyoptions"></select>

    * 改进的文件上传控件,你可以使用一个控件上传多个文件,自行规定上传文件的类型(accept),你甚至可以设定每个文件最大的大小(maxlength)。你看出它和一般操作系统提供的文件上传控件的区别了吗,反正我觉得基本一致了。在HTML5应用中,文件上传控件将变得非常强大和易用。
    * 重复(repeat)的模型,HTML5提供一套重复机制来帮助我们构建一些重复输入列表,其中包括一些诸如 add、remove、move-up,move-down的按钮类型,通过这一套重复的机制,开发人员可以非常方便的实现我们经常看到的编辑列表,这是一个很常见的模式,我们可以增加一个条目、删除某个条目、或者移动某个条目等等。
    * 内建的表单校验系统,HTML5为不同类型的输入控件各自提供了新的属性,来控制这些控件的输入行为,比如我们常见的必填项required属性,以及为数字类型控件提供的max、min等。而在你提交表单的时候,一旦校验错误,浏览器将不执行提交操作,而会显示相应的检验错误信息。

      <input type="text" required></input>
      <input type="number" min=10  max=100></input>

    * XML Submission,我们一般常见的是form的编码格式是application/x-www-form-urlencoded。开发人员都很清楚这种格式,数据送到服务器端,可以方便的存取。HTML5将提供一种新的数据格式:XML Submission,即application/x-www-form+xml。简单的举例说,服务器端将直接接收到XML形式的表单数据。

      <submission>
          <field name="name" index="0">Peter</field>
          <field name="password" index="0">password</field>
      </submission>

实例分析

我将利用HTML5新的表单系统, 做一个简单的用户注册的界面,包括用户名,密码,出生日期,保密问题等内容,代码如下:

<! doctype html>
<html>
    <head>
        <style>
            p label {
                width: 180px;
                float: left;
                text-align: right;
                padding-right: 10px
            }
            table {
                margin-left: 80px
            }
            table td {
                border-bottom: 1px solid #CCCCCC
            }
            input.submit {
                margin-left: 80px
            }
        </style>
    </head>
    <body>
        <form action='/register' enctype="application/x-www-form+xml" method="post">
            <p>
                <label for='name'>ID(请使用Email注册)</label>
                <input name='name' required type='email'></input>
            </p>
            <p>
                <label for='password'>密码</label>
                <input name='password' required type='password'></input>
            </p>
            <p>
                <label for='birthday'>出生日期</label>
                <input type='date' name='birthday' />
            </p>
            <p>
                <label for='gender'>国籍</label>
                <select name='country' data='countries.xml'></select>
            </p>
            <p>
                <label for='photo'>个性头像</label>
                <input type='file' name='photo' accept='image/*' />
            </p>
            <table>
                <thead>
                    <td><button type="add" template="questionId">+</button> 保密问题</td>
                    <td>答案</td>
                    <td></td>
                </thead>
                <tr id="questionId" repeat="template" repeat-start="1" repeat-min="1" repeat-max="3">
                    <td><input type="text" name="questions[questionId].q"></td>
<td><input type="text" name="questions[questionId].a"></td>
<td><button type="remove">删除</button></td>
                </tr>
            </table>
            <p>
                <input type='submit' value='send' class='submit' />
            </p>
        </form>
    </body>
</html>

由于目前HTML5标准仍然在开发中,不同的浏览器对HTML5特性的支持都相当有限。其中Opera在表单方面支持得比较好,本实例在Opera9上运行一切正常,效果图如下:

这个实例运用了一些HTML5的新的表单元素,比如email类型的输入框(ID),日期类型的输入框(出生日期)。并且使用了重复模型来引导用户填写保密问题,而在个性头像的上传中,通过限制文件类型,方便用户选择图片进行合乎规范的内容上传。而用户选择国籍的下拉选择输入框中,采用的是外联数据源的形式,外联数据源使用coutries.xml,内容如下:

<select xmlns="http://www.w3.org/1999/xhtml">
    <option>China</option>
    <option>Japan</option>
    <option>Korea</option>
</select>

并且form的enctype是application/x-www-form+xml,也就是HTML5的XML提交。所以一旦form校验通过,form的内容将会以XML的形式提交。你还会发现,在ID输入框如果没有值,或者输入了非email类型的字符串时,一旦试图提交表单,就会有提示错误的信息出现,而这都是浏览器内置的。
结语

HTML5对表单控件的更新,无疑是很振奋人心的。本文描述了一部分表单的新特性,还有一部分新特性同样很令人期待。相信随着标准的深入开发以及浏览器对HTML5支持程度的进一步提升,设计一个简单易用的表单的工作,将变得非常轻松。
参考资料

   1. W3C HTML5 规范: http://www.w3.org/TR/html5/
   2. HTML5 与 HTML4的差异:http://www.w3.org/TR/html5-diff/
   3. Opera dev: Improve your forms with HTML5: http://dev.opera.com/articles/view/improve-your-forms-using-html5/
   4. Comparison of layout engines(HTML5):
      http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML_5)

<注:转载自http://www.infoq.com/cn/articles/html5-web-form>
分享到:
评论
1 楼 cuixiping 2009-07-01  
果然强悍!

但是默认UI有点儿难看

相关推荐

    AngularJS开发下一代Web应用

    **AngularJS:构建下一代Web应用** AngularJS,作为Google维护的一款强大的前端JavaScript框架,自2009年诞生以来,已经在Web开发领域产生了深远影响。它通过提供丰富的功能集,帮助开发者构建动态、数据驱动的单页...

    html5移动Web网页开发模板.zip

    HTML5是下一代超文本标记语言,它为移动Web开发提供了强大的功能和丰富的API,使得创建交互性强、性能优秀的移动Web应用成为可能。本压缩包"html5移动Web网页开发模板.zip"包含了9个专为移动设备设计的HTML5网页模板...

    html5,web前端综合实例

    HTML5是下一代超文本标记语言,它在2014年被正式定义为W3C标准,极大地丰富了Web开发的潜力。HTML5的核心目标是提高网页的互操作性、可访问性和可用性,同时也引入了许多新的元素和API,使得Web前端开发变得更加高效...

    html5中文api

    HTML5是下一代超文本标记语言,它为网页和应用程序提供了更强大的功能和更丰富的交互性。这个"html5中文api"资源是一个专为中文用户设计的学习工具,包含了HTML5的开发手册,以CHM(Compiled Help Manual)格式提供...

    HTML5详解 Html5实战

    HTML5是下一代超文本标记语言,它在2014年正式成为W3C的推荐标准,极大地丰富了Web开发的潜力。HTML5的核心目标是提高用户体验,简化开发者的工作,并推动互联网应用程序的进步。本篇文章将深入探讨HTML5的各个方面...

    Html 5 App 界面模板(HTML5模板)

    HTML5是下一代网页标准,它在原有的HTML4基础上增加了许多新的功能和特性,极大地提升了Web应用的性能和用户体验。HTML5 App界面模板是基于这些新特性的设计,旨在为移动应用或现代Web应用提供流畅、互动且响应式的...

    HTML5.zip

    HTML5是下一代超文本标记语言,它在2014年被正式确立为W3C的标准,极大地丰富了网页内容的展示方式,提高了用户体验,并且为开发者提供了更强大的功能。这个压缩包“HTML5.zip”可能包含了一份关于HTML5的详细讲解...

    html5在移动领域开发学习笔记(ppt版)

    HTML5是下一代网页标准,它的出现极大地扩展了Web应用程序的功能,使其在移动设备上具有更强的适应性和交互性。在移动领域,HTML5已经成为开发者构建跨平台、原生体验的移动应用的重要工具。本教程旨在深入浅出地...

    HTML5高级程序设计

    总之,“HTML5高级程序设计”涵盖了从基本元素到复杂交互的全方位知识,旨在帮助开发者利用HTML5的强大功能构建下一代Web应用。通过深入学习和实践,开发者能够掌握构建高性能、高互动性的现代网页所需的技术。

    html5参考手册

    HTML5是下一代Web语言,是超文本标记语言(HTML)的最新版本,它引入了许多新的特性和改进,旨在提升Web开发的效率、可访问性以及交互性。此“HTML5参考手册”是一份全面的资源,包含了关于HTML5语法、元素、属性、...

    HTML5学习资料

    HTML5是下一代超文本标记语言,它在2014年被正式确立为W3C标准,极大地丰富了网页内容的展示方式,并提高了用户体验。HTML5不仅改进了HTML4的许多元素,还引入了许多新的标签和API,使得开发者能够更方便地创建功能...

    html 5 开发

    HTML5是下一代HTML标准,旨在替代1999年发布的HTML4.01和XHTML 1.0。它的核心目标是强化Web网页的表现性能,同时增加本地存储和Web应用程序的功能,减少对插件的依赖,如Adobe Flash、Microsoft Silverlight和Oracle...

    HTML 5 新特性介绍(ppt)

    HTML5是下一代超文本标记语言,它在2008年首次被提出,并在后续几年逐渐完善,成为了现代网页开发的重要标准。这个压缩包文件包含了多个关于HTML5新特性的介绍,包括“浅谈HTML5_20080804.pps”、“Developing with ...

    html5网站后台源码

    HTML5是下一代网页标准,它在原有的HTML4基础上增加了许多新的功能和特性,极大地提升了网页的交互性、可访问性和用户体验。在这个“html5网站后台”项目中,我们可以看到一系列的源码文件,用于构建一个美观且功能...

    几个HTML5移动开发源码

    HTML5作为下一代网页语言,带来了诸多新特性,如离线存储、媒体元素、表单控件改进、画布(Canvas)和SVG矢量图等,使得移动应用开发变得更加高效和便捷。 首先,让我们深入了解一下HTML5的核心特性: 1. **离线...

    HTML5开发精要与实例详解 pdf

    HTML5是下一代网页标准,它的出现极大地丰富了网页的表现力和交互性,为开发者提供了更强大的工具和更多可能性。本书“HTML5开发精要与实例详解”深入浅出地介绍了HTML5的核心概念、语法特性以及实际应用,旨在帮助...

Global site tag (gtag.js) - Google Analytics