这是补充HTML5基础知识的系列内容,其他为:

在之前的笔记中记录了HTML5标签元素的语义以及新定义,本周开始进入Web表单部分的学习,该章节已经读过一遍,很多表单验证的工作都可以通过HTML5完成!现在整理笔记,再次进入Web表单的神奇地域。

因该书出版较早,很多东西已经更改,我会在文中进行更正。

一、表单验证

无论是什么站点,只要存在表单元素,基本就少不了表单验证。在HTML4中,表单验证一般交由JavaScript来完成,到了HTML5,提供了多种表单验证方式。一般最常用的便是required属性。有了该属性,如果表单元素为空,则不能进入提交。

二、HTML4输入类型

在HTML5时代,HTML4的表单元素依然发挥着最为重要的力量,我们用到的大多数表单还是HTML4时的元素。

三、HTML5新输入类型

1、建立联系人表单

<form>
<fieldset>
<legend>联系人信息</legend>
<ul>
<li>
<label for="email">邮箱:</label>
<input required type="email" id="email" name="email" />
</li>
<li>
<label for="tel">电话:</label>
<input required type="tel" id="tel" name="tel" />
</li>
<li>
<label for="url">网址:</label>
<input required type="url" id="url" name="url" />
</li>
</ul>
<input type="submit" value="提交" />
</fieldset>
</form>

上面我们使用了三个新的input类型收集用户信息,分别是emailtelurl。分别表示邮件、电话和网址。

浏览器默认不对上述表单进行验证,必须加上required参数。

1、input type="email"

告诉浏览器,该输入域的内容为邮件格式。因各个浏览器的验证方式不同,给出的提示也不尽相同,比如上述相同的表单,在chrom v55上以及firefox上的提示分别如下:

email类型表单只会验证邮件格式是否为aa@bb的格式,并不会判断该邮件地址是否存在。

这样方便测试没有对表单设置样式,后面会有专门介绍。

2、input type="tel"

tel类型是一个普通的文本输入域,尽管现实中电话多为数字,但tel输入域能够接受任意字符(电话号码有时也包含非数字字符,比如+)。

3、input type="url"

在博客评论中常常看到输入网址的表单。在HTML5中,提交网址使用url类型表单更优雅。

与email相同,该输入域只会校验输入的格式,不会确认有无该网址。

多数情况下,URL的形式类似于http://baidu.com,但也有baidu.com的形式存在,此外,还有其他多种形式:

由于这些URL的存在,现在表单会将aa:bb形式的输入视为URL,验证通过。大多数浏览器都有自己的URL形式,Firefox有about:config地址。所以,任何带有:的URL都可通过验证。

2、搜索表单

<form role="search">
<label for="search">搜索</label>
<input type="search" id="search" name="search" />
<input type="submit" value="提交" result="5" />
</form>

上述中,type="search"并没有特殊作用,其依然是一个普通的文本输入域。仅仅帮浏览器理解,这是搜索输入域。

3、日期、时间选择

传统web表单中,大多通过jquery插件来完成日期选择功能,在HTML5中,提供了一系列的日期时间表单,可以满足大多数的场景需求。

HTML5提供了如下type类型:

  • date
  • time
  • datetime
  • datetime-local —— 不带有时区信息
  • week
  • month

chrome支持datetime-local,不支持datatime

综合示例:

See the Pen html5-form by 绿岛之北 (@Gavin-YYC) on CodePen.

4、数字选择器

<form>
<fieldset>
<legend>数字选择器</legend>
<label for="number">数字选择器</label>
<input type="number" name="number" max="10" min="1" step="2" id="number" value="">
<input type="submit" name="" value="提交">
</fieldset>
</form>

number输入类型只接受数字,否则将返回验证错误。

属性:minmaxstep,指定数字范围和步长。

  • 1、step可以是正数也可以是负数、也可以是小数
  • 2、指定了step后,任何不在范围的数字都会验证失败,比如上述第四个示例。

5、创建滑块

range一般用在表单的“评价部分”,或者是控制视频的音量等。

<form>
<fieldset>
<legend>滑块</legend>
<label for="range">滑块</label>
<input type="range" name="range" id="range" value="1" step="0" max="100" min="0">
</fieldset>
</form>

number相同,其也有minmaxstep三个属性。

使用output显示值

我们上述的滑块很好用,但有一个缺点,就是没有显示我们当前选中的值。我们可以通过output来显示,该功能只需要一点点的JavaScript。

<form oninput="output.value=range.value">
<fieldset>
<legend>滑块</legend>
<label for="range">滑块</label>
<input type="range" name="range" id="range" value="1" step="0" max="100" min="0">
<output name="output"></output>
</fieldset>
</form>

现在,拖动上面的滚动条就可以显示当前的数值了。

备注:在之前大多是通过onforminput事件来完成,现在新版本的浏览器都支持form的oninput属性,替代了原来的onforminput

<!--之前的写法,现在已经不支持-->
<output onforminput="value=range.value"></output>

上述可参考:Is onforminput Deprecated in HTML5 Forms? (And Why Should I Care Anyways?)

6、颜色选择器

<form>
<fieldset>
<legend>颜色选择器</legend>
<label for="color">选择颜色</label>
<input type="color" name="color" id="color" value="">
<input type="submit" name="" value="提交">
</fieldset>
</form>

7、占位文字:placeholder

前面介绍了一些新的输入类型,实际上,还有一些新属性用来配合新输入类型来提高质量,而这些新属性已经广为使用。

<input placeholder="请输入您的用户名" type="text" name="username" />

在之前,这种效果只能通过JavaScript来实现。

默认的占位符为灰色与背景色没有足够的对比度,可以使用CSS来解决这个问题:

input::-webkit-input-placeholder {
color: red;
}
input::-moz-placeholder {
color: red;
}

8、基本验证:required

我们在上面已经多次使用了required属性,提供该属性,如果表单为空则不会提交表单,并提示相应信息。

<input type="text" required />

除了required属性外,你还可以使用aria-required="true",这样将提高表单元素的可用性。

总结

上述体验了HTML5新的表单元素,在实际项目中,使用到这些地方很少,有时候会用到但也想不起来这些元素。所以,今天就完完全全的体验一次,后续项目中就可以完全使用这些新(其实也不新了。。)元素。

读书笔记:《HTML5开发手册》Web表单的更多相关文章

  1. 【HTML5开发系列】表单元素

    <form> 创建一个HTML表单 属性: action 表示提交表单时浏览器应该把用户填写的数据发送到什么地方 method 用来指定表单数据发送到服务器的方式.允许值有get和post ...

  2. 读书笔记:《HTML5开发手册》--figure、time、details、mark

    这是补充HTML5基础知识的系列内容,其他为: 一.HTML5-- 新的结构元素 二.HTML5-- figure.time.details.mark 三.HTML5-- details活学活用 四. ...

  3. 读书笔记:《HTML5开发手册》--HTML5新的结构元素

    读书笔记:<HTML5开发手册> (HTML5 Developer's CookBook) 虽然从事前端开发已有很长一段时间,对HTML5标签也有使用,但在语义化上面理解还不够清晰.之前在 ...

  4. 读书笔记:《HTML5开发手册》--现有元素的变化

    读书笔记:<HTML5开发手册>-- 现存元素的变化 继续学习HTML5语义化的内容,今天主要介绍一下,HTML5之前的元素经HTML5规范后的语义及一些使用示例. 一.cite HTML ...

  5. Flask开发系列之Web表单

    Flask开发系列之Web表单 简单示例 from flask import Flask, request, render_template app = Flask(__name__) @app.ro ...

  6. HTML5初步——新的表单元素和属性

    HTML5初步--新的表单元素和属性 HTML5初步--新的表单元素和属性 <!DOCTYPE html> <html> <head> <meta chars ...

  7. 《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序

    读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况. Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检 ...

  8. HTML5 学习总结(二)——HTML5新增属性与表单元素

    一.HTML5新增属性 1.1.contextmenu contextmenu的作用是指定右键菜单. <!DOCTYPE html> <html> <head> & ...

  9. 使用Visual Studio 2013 从头构建Web表单

    在这篇文章中,我将采取VS 2013中特定的模板,也就是没有身份验证的Web表单模板,并说明如何构建这个项目从头开始.在本教程的最后,你会最终有一个模板,内容几乎是一样的使用Web表单模板没有认证(文 ...

随机推荐

  1. 算法如功夫——C++ 用递归函数计算n的阶乘n!

    算法如功夫,套路练久了,才干应用自如! 学功夫不能死练,知其所以然,取长补短! #include <iostream.h> int main(int argc, char* argv[]) ...

  2. 编程算法 - 二部图确定 代码(C)

    二部图确定 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 给定一个具有n个顶点的图. 要给图上每一个顶点染色, 而且要使相邻的顶点颜色不同.  ...

  3. 推荐两个针对github的chrome插件

    作为一只程序猿,在github上找代码.看代码是再正常不过的事情了.这时候有个工具可以方便你翻看代码,想必是极好的. Sourcegraph for GitHub 这个插件允许你像使用IDE那样浏览代 ...

  4. 19.最经济app发短信的方法

    在创业团队.一个重要的原则是能省就省,该花的花,明智地使用金钱. 今的app,为了获取用户的社交关系.须要用户的手机号注冊. 用手机号注冊就涉及到一个发送短信验证码的问题,那怎么才干在短信服务上投入最 ...

  5. Spring Resource之作为依赖的资源

    如果一个bean自己能够通过一些动态的过程来决定和提供一些资源路径,那么通过ResourceLoader接口来加载资源会是更有效的.考虑作为一个例子的加载模板,需要的指定的资源取决于用户的角色.如果资 ...

  6. 依据道路的shape获得high_cross和low_cross

    如图所看到的:怎样依据提供的道路的shape file获得该路的high cross和low cross 所谓的high cross就是图中的king st这条路,low cross是Gravers ...

  7. 【C#版本详情回顾】C#3.0主要功能列表

    隐式类型的本地变量和数组 在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型 对象初始值设定项 支持无需显式调用构造函数即可进行对象初始化 集合初始值设 ...

  8. vi/vim多行注释和取消注释

    多行注释: 1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来 2. 按大写字母I,再插入注释符,例如// 3. 按esc键 ...

  9. idea中output log4j中文乱码

    1.设置tomcat中的VM optins:-Dfile.encofing=UTF-8 2.idea安装目录bin文件夹中idea.exe.vmoptions.idea64.exe.vmoptions ...

  10. MVC为什么不再需要注册通配符(*.*)了?

    MVC为什么不再需要注册通配符(*.*)了? 文章内容 很多教程里都提到了,在部署MVC程序的时候要配置通配符映射(或者是*.mvc)到aspnet_ISPAI.dll上,在.NET4.0之前确实应该 ...