HTML5表单、一些新增的输入类型以及为不支持新特性的浏览器提供解决方案

我们先来看一下这么样一个表单:

一、一步一步来分析下代码:

1 <form id="redemption" method="post">
2 <hgroup>
3 <h1>Oscar Redemption</h1>
4 <h2>Here‘s your chance to set the record straight: tell us what
5 year the wrong film got nominated, and which film <b>should</b>
6 have received a nod...</h2>
7 </hgroup>
8 <!--后面的代码-->
9 </form>

hgroup标签:用来将h1...h6标题标签进行分组

这部分代码很简单,不过多分析,我们把注意力放在表单上,顺带提一些H5的一些元素.

 1 <form id="redemption" method="post">
 2 <!--前面的代码-->
 3 <fieldset>
 4   <legend>About the offending film (part 1 of 3)</legend>
 5   <div>
 6     <label for="film">The film in question?</label>
 7     <input id="film" name="film" type="text" placeholder="e.g. King
 8     Kong" required aria-required="true" >
 9   </div>    <div>...</div>    <div>...</div>  </fieldset>
10 <!--后面的代码-->
11 </form>

fieldset标签:用于将表单进行分组

legend标签:用于将给分组的表单添加一个标题

这里着重看一下:

placeholder属性:用于给表单添加一个提示文字。

required属性:可用于多种类型的输入元素,以确保表单域必须输入值。

range 、 color 、button 和 hidden 类型的输入元素则不能使用 required ,因为这几种输入类型几乎都

有默认值。

aria-required属性:WAI-ARIA技术(这个我研究的少,WAI-ARIA指无障碍网页应用。主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员。[先笑五分钟])

建议没有特殊原因加上这个属性来方便用户。

autofocus属性:可以让表单在加载完成时就有一个表单域被默认聚焦,方便用户输入。

例如:

1 <div>
2 <label for="search">Search the site...</label>
3 <input id="search" name="search" type="search" placeholder="Wyatt Earp"
4 autofocus>
5 </div>

input输入框就会获得焦点,但是需要注意的是,如果表单中多个input输入框都写了该属性,则会出现跨浏览器混乱,在chorme下会聚焦表单中最后一个输入框,在firefox下会聚焦第一个输入框。

list属性以及datalist标签:

 1 <div>
 2   <label for="awardWon">Award Won</label>
 3   <input id="awardWon" name="awardWon" type="text" list="awards">
 4   <datalist id="awards">
 5   <select>
 6     <option value="Best Picture"></option>
 7     <option value="Best Director"></option>
 8     <option value="Best Adapted Screenplay"></option>
 9     <option value="Best Original Screenplay"></option>
10   </select>
11   </datalist>
12 </div>

list 属性以及对应的 datalist 元素可以让用户在输入框中开始输入值的时候,显示一组备选值。

list 属性中的值( awards )同时也是 datalist 元素的 id 。这样就可以让 datalist与输入项关联起来

二、HTML5 的新输入类型

(1)email

1 <div>
2 <label for="email">Your Email address</label>
3 <input id="email" name="email" type="email"
4 placeholder="[email protected]" required aria-required="true">
5 </div>

当提交的格式不是email时:

另外,许多移动设备会根据输入内容的类型来自动改变键盘的模式:

这是type=email时ipad的键盘模式:

(2)number

1 <div>
2 <label for="yearOfCrime">Year Of Crime</label>
3 <input id="yearOfCrime" name="yearOfCrime" type="number" min="1929"
4 max="2015" required aria-required="true" >
5 </div>

(3)url

1 <div>
2 <label for="web">Your Web address</label>
3 <input id="web" name="web" type="url" placeholder="www.mysite.com">
4 </div>

同样会验证输入的url格式是否正确:

如果是一些移动设备,也会与email类似也会改变键盘模式:

(4)tel

1 <div>
2 <label for="tel">Telephone (so we can berate you if you‘re wrong)</label>
3 <input id="tel" name="tel" type="tel" placeholder="1-234-546758"
4 autocomplete="off" required aria-required="true" >
5 </div>

(5)search

1 <div>
2 <label for="search">Search the site...</label>
3 <input id="search" name="search" type="search" placeholder="Wyatt Earp">
4 </div>

不同浏览器渲染的样式不太一样:

chrome下:

firefox下:

(6)pattern

???what ???   哈哈哈,如果你不太了解正则表达式,那我只能说不知是福。

大多数情况下,正则表达式你可以百度出来,当然最好还是学一学吧。

1 <div>
2 <label for="name">Your Name (first and last)</label>
3 <input id="name" name="name" pattern="([a-zA-Z]{3,30}\s*)+[a-zA- Z]{3,30}"
4 placeholder="Dwight Schultz" required aria- required="true" >
5 </div>

这种输入框会按照指定格式验证输入的值。

(7)color

1 <div>
2 <label for="color">Your favorite color</label>
3 <input id="color" name="color" type="color">
4 </div>

日期和时间输入类型:

(1)date

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

(2)month

<input id="month" type="month" name="month">

(3)week

<input id="week" type="week" name="week">

(4)time

<input id="time" type="time" name="time">

范围滑动条:

range:

<input id="howYouRateIt" name="howYouRateIt" type="range" min="1" max="10"
value="5" >

range的onchange事件:

< input id="howYouRateIt" name="howYouRateIt" type="range" min="1" max="10"
value="5" onchange="showValue(this.value)"><span id="range">5</span>
1 <script>
2 function showValue(newValue)
3 {
4 document.getElementById("range").innerHTML=newValue;
5 }
6 </script>

三、如何给不支持新特性的浏览器打补丁

上面暴露的了两个显而易见的问题:

(1)支持表单新特性的浏览器在具体实现上有所不同

(2)对完全不支持新特性的浏览器如何处理

这里提供一个库,由 Alexander Farkas编写的“Webshims Lib”(http://afarkas.github.com/webshim/demos/)
它可用于插入表单补丁(也可以为其他 HTML5特性打补丁),从
而使不支持新特性的浏览器可以处理 HTML5 表单。

使用方法:

a.下载 Webshims Lib(http://github.com/aFarkas/webshim/downloads)并解压;

b.将其中的 js-webshim 文件夹复制到相应的位置;

<script src="js/jquery-1.7.1.js"></script>
<script src="js-webshim/minified/extras/modernizr- custom.js"></script>
<script src="js-webshim/minified/polyfiller.js"></script>
<script>
//加载补丁
$.webshims.polyfill();
</script>

原文地址:https://www.cnblogs.com/lewis-messi/p/8336321.html

时间: 2024-08-08 13:54:50

HTML5表单、一些新增的输入类型以及为不支持新特性的浏览器提供解决方案的相关文章

html5表单及新增的改良元素

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!--表单内元素的form属性:为元素指定一个form属性,属性值为该表单的id--> <form id="testform"> <input type="subm

html5 表单的新增type属性

<form action=""> 用户名:<input type="text" name="userName"> <br> 密码:<input type="password" name="userPwd"> <br> <!--email提供了默认的电子邮箱的完整验证:要求必须包含@符号,同时必须包含服务器名称,如果不能满足验证,则会阻止当前的

html5 表单的新增元素

<form action=""> <!--专业: <select name="" id=""> <option value="1">前端与移动开发</option> <option value="2">java</option> <option value="3">javascript</op

jQuery html5Validate基于HTML5表单验证插件

一.前言 前3篇文章实际都是为本文做铺垫的,如果以下棋表示,前三篇是普通走棋,本篇是将军! 目前市面上有不少表单验证插件,看似强大,实在糟糕! 总结下,有以下一些问题: 过多干预包括:改变了表单元素UI, 为表单元素绑定过多事件等 布局等限制包括:需要特定结构的布局,需要特定的类名或者ID 学习成本包括:N多元作者自定义的属性,或者自定义的特定的数据结构 可用性 当JS出现错误的时候而无法正常运作的时候,验证就是聋子的耳朵——摆设,即使在现代浏览器下也是如此. 面向未来的表单验证 验证驱动验证信

不支持html5表单验证新特性的解决方案

下载 Alexander Farkas编写的“Webshims Lib”(http://afarkas.github.com/webshim/demos/)它可用于插入表单补丁(也可以为其他 HTML5特性打补丁),从而使不支持新特性的浏览器可以处理 HTML5 表单. 使用方法: a.下载 Webshims Lib(http://github.com/aFarkas/webshim/downloads)并解压: b.将其中的 js-webshim 文件夹复制到相应的位置: <script sr

HTML5表单新增属性

------------------siwuxie095 HTML5 表单新增元素与属性 1.form 属性 在 HTML4 中,表单内的从属元素必须书写在表单内部,而 在 HTML5 中,可以把它们书写在页面上任何地方,然后为 该元素指定一个 form 属性,属性值为该表单的 id,这样就 可以声明该元素从属于指定表单了 2.formaction 属性 在 HTML4 中,一个表单内的所有元素只能通过表单的 action 属性被统一提交到另一个页面,而在 HTML5 中,可以为所有 的提交按钮

跟KingDZ学HTML5之十二 HTML5 Form 表单元素新增属性

这节课给大家补充一下,一些 前些课程没有接触的知识. 在XHTML中,表单内的从属元素必须书写在表单内部,但是在HTML5中,可以把他们书写在页面上任何地方,然后给元素制定一个form属性,属性值为该表单单位的id,这样就可以声明该元素从属于指定表单了. 这个我想对于我们来说,应该是个很新奇的玩意吧 <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>form

IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素

HTML5有一些新的表单元素:<datalist>.<keygen>.<output>.不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性,仍然可以显示为常规的表单元素. 1  <datalist>元素 <datalist>元素规定输入域的选项列表.<datalist>属性规定form或input域应该拥有自动完成功能.当用户在自动完成域中开始输入时,浏览器应该在该域中显示的填写的选项.Internet Exp

HTML5表单

新增的input输入类型 HTML5中增加了表单方面的诸多功能,包括增加input输入类型.表单元素.form属性和input属性等. 新的input输入类型 email类型的input元素是一种专门用于输入E-mail地址的文本输入框,在提交表单的时候,会自动验证email输入框的值,如果不是一个有效的E-mail地址,该输入框不允许提交该表单. <input type="email" name="user_email"> url类型的input元素提