HTML5表单

128 阅读7分钟

1 新的Input类型

对于不兼容H5表单的浏览器默认显示为普通 text 输入框

1.1 email---email地址框

专门用于输入email地址的文本框,在提交表单的时候,会自动验证email输入框的值,非有效电子邮件地址,不允许提交。

1.2 url---URL地址框

用于输入url地址的文本框,提交表单时自动验证是否为正确url地址格式。这里的url地址必须以 http:// 或 https:// 开头,建议用占位符提示用户。

1.3 number---数字框

用于输入数值的文本框,可以设定对所接受的数字的限制,包括允许的最大值(max)、最小值(min)、合法的数字间隔(step)或默认值(value)等,如果所输入的数字不在限定范围内,提示错误信息。

1.4 range---范围框

用于输入包含一定范围内数字值的文本框,在网页中显示为滑动条,可以设定对所接受的数字的限制,包括规定允许的最大值(max)和最小值(min)、合法的数字间隔(step)或默认值(value)

<form action"demo_form.php" method="get">
    <input type="email" name="user_email">
    <input type="url" name="user_url">
    <input type="number" name="user_number" min="1" max="20" step="4">
    <input type="range" name="user_range" min="1" max="20" step="2">
    <input type="submit">
</form>

1.5 data pickers---日期选择器

H5提供了六种日期选择器控件

time类型选择器IE10不支持。time、date、mounth和week类型其属性有 max、min、step(time类型秒为单位)和value

datetime类型仅部分版本浏览器支持,注意兼容。

1.6 search---搜索框(Firefox不支持)

用于输入搜索关键词的文本框,当输入内容时,右侧会出现一个“X”图标,单击即可清除搜索框。

提示:在默认情况下,为Chrome、Safari和mobile Safari等浏览器中得搜索框设置样式是受到限制的。如果要消除这一约束,可以使用专有的“-webkit-appearance: none;”声明,例如:

input[type="search"] {
    -webkit-appearance: none
}

appearance属性并不是官方css,因此不同浏览器的行为有可能不一样

1.7 tel---电话号码框

专门输入电话号码的文本框,不限定只输入数字,包括其他电话可能包含的符号,如:“+”“-”“(” “)”等

1.8 color---拾色器

用于选择颜色的文本框。当color类型文本框获取焦点后,会自动调用系统的颜色窗口。IE和Safari、Max OS和iOS系统不支持。

2 新的input属性

2.1 autocomplete---自动完成

帮助用户在输入框中实现自动完成输入。取值包括on 和 off,使用input类型包括:text、search、url、telephone、email、password、datepickers、range和color。

该属性也适用于form元素,默认状态下表单的autocomplete属性处于打开状态。在某些浏览器中需要先启用浏览器本身的自动完成功能,才能使autocomplete属性起作用。

示例:使用datalist元素和list属性提供一个数据列表供用户进行选择。

<form autocompelete="on">
    <input type="text" id="city" list="cityList">
    <datalist id="cityList" style="display:none;">
        <option value="BeiJing">BeiJing</option>
        <option value="QingDao">QingDao</option>
        <option value="HangZhou">HangZhou</option>
    </datalist>
</form>

提示:多数浏览器都带有辅助用户完成输入的自动完成功能,只要开启了该功能,浏览器会自动记录用户所输入的信息,当再次输入相同的内容时,浏览器就会自动完成内容的输入。从安全性和隐私的角度考虑,这个功能存在较大的隐患,如果不希望浏览器自动记录这些信息,则设置autocomplete属性关闭该功能。

2.2 autofocus---自动获取焦点

实现在页面加载时,让表单控件自动获取焦点。值为autofocus,适用于所有input标签的类型。

注意:在同一页面中只能指定一个autofocus对象,如果浏览器不支持autofocus属性,使用js实现该功能。

<script>
if(!("autofocus) in document.createElement("input")){
    document.getElementById("ok").focus();
}
</script>

2.3 from---归属表单

设置表单控件归属的表单,适用于所有input标签的类型。在H4中,用户必须把相关的控件放在表单内部,即

之间。提交时在form之外的控件将被忽略。

属性值为对应归属表单的id值,如果一个form属性要引用两个或以上的表单,使用空格将表单的id值分隔开。

2.4 表单重写

新增5个表单重写属性,用于重写

标签属性设置(仅适用于submit和image类型的input元素):

formaction:重写action属性

fromenctype:重写enctype属性

formmethod:重写method属性

formnovalidate:重写novalidate属性

formtarget:重写target属性

2.5 height和width---高和宽

仅用于设置image类型input标签的图像高度和宽度

2.6 list---列表选项

用于设施输入域的datalist。datalist是输入域的选项列表,适用于一下类型input标签:text、search、url、telephone、email、date pickers、number、range和color。

2.7 min、max和step---最小值、最大值和步长

用于为包括数字或日期的input类型设置限制,适用于date pickers、number和range类型的input标签

2.8 multiple---多选

设置输入域一次选择多个值,适用于email和file类型的input标签。

2.9 pattern---匹配模式

用于验证input域的模式。模式就是js正则表达式,通过自定义的正则表达式匹配用户输入的内容,以便进行验证。适用于text、search、url、telephone、email和password类型input标签。title是校验错误时的提示信息。

推荐常用正则网站:正则表达式:学习、构建和测试

HTML5Pattern

<input type="text" pattern="[0-9]{6}" name="zip_code" title="请输入6位数的邮政编码"/>

2.10 placeholder---替换文本

用于为input类型的输入框提供一种文本提示,可以描述输入框期待用户输入的内容,在输入框为空时显示,而当输入框获取焦点时自动消失。适用于text、search、url、telephone、email和password类型的input标签

2.11 required---必填

定义输入框填写的内容不能为空,否则不允许提交表单。适用于text、search、url、telephone、email、password、date pickers、number、checkbox、radio和file类型的input标签。

3 新的表单元素

3.1 datalist---数据列表

用于为输入框提供一个可选地列表,供用户输入匹配或直接选择。如果不想从列表中选择,也可以自行输入内容。与option元素配合使用,每一个option选项都必须设置value属性值,其中datalist标签用于定义列表框,option标签用来定义列表项。通过使用输入框的list属性引用datalist元素的id绑定到输入框。

3.2 keygen---密钥对生成器(大多不支持)

提供一种验证用户的可靠方法

作为密钥对生成器,当提交表单时,keygen元素会生成两个键:私钥和公钥。私钥存储与客户端;公钥被发送到服务器,公钥可用于之后验证用户的客户端证书。目前浏览器对该元素的支持不理想。

3.3 output---输出结果

用于在浏览器中显示计算结果或脚本输出。示例计算用户输入的两个数字的乘积:

<script type="text/javascript">
function multi(){
    a = parseInt(prompt("请输入第1个数字。", 0));
    b = parseInt(prompt("请输入第2个数字。", 0));
    document.forms["form"]["result"].value = a*b
}
</script>

<body onload="multi()">
<form action="testform.asp" method="get" name="form">
    乘积为:<output name="result"></output>
</form>
</body>

4 新的form属性

4.1 autocomplete---自动完成

同2.1内容

4.2 novalidate---禁止验证

规定在提交表单时不应该验证form或input域。适用于form标签和text、search、url、telephone、email、password、date pickers、range和color类型的input标签。

补充:H5为form、input、select和textarea元素定义了一个**checkValidity()**方法。调用该方法,可以显式地对表单内所有元素内容或danger元素内容进行有效性验证。checkValidity()方法将返回布尔值以提示是否通过验证。

form和input元素都有一个validity属性,该属性返回一个ValidityState对象,对象具有很多属性,其中最简单最重要的属性为valid属性,表示表单内所有元素内容是否有效或单个input元素内容是否有效。