HTML5+CSS3从入门到精通(微课精编版)
上QQ阅读APP看书,第一时间看更新

3.3 新的input属性

HTML5为input元素新增了多个属性,用于限制输入行为或格式。

3.3.1 autocomplete——自动完成

视频讲解

autocomplete属性可以帮助用户在输入框中实现自动完成输入。取值包括on和off,用法如下所示。

    <input type="email" name="email" autocomplete="off" />

提示:autocomplete属性适用input类型包括:text、search、url、telephone、email、password、datepickers、range和color。

autocomplete属性也适用于form元素,默认状态下表单的autocomplete属性处于打开状态,其包含的输入域会自动继承autocomplete状态,也可以为某个输入域单独设置autocomplete状态。

注意:在某些浏览器中需要先启用浏览器本身的自动完成功能,才能使autocomplete属性起作用。

【示例】设置autocomplete为on时,可以使用HTML5新增的datalist元素和list属性提供一个数据列表供用户进行选择。下面示例演示如何应用autocomplete属性、datalist元素和list属性实现自动完成。

在浏览器中预览,当用户将焦点定位到文本框中时,会自动出现一个城市列表供用户选择,如图3.36所示。而当用户单击页面的其他位置时,这个列表就会消失。

当用户输入时,该列表会随用户的输入自动更新,例如,当输入字母q时,会自动更新列表,只列出以q开头的城市名称,如图3.37所示。随着用户不断地输入新的字母,下面的列表还会随之变化。

图3.36 自动完成数据列表

图3.37 数据列表随用户输入而更新

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

3.3.2 autofocus——自动获取焦点

视频讲解

autofocus属性可以实现在页面加载时,让表单控件自动获得焦点。用法如下所示。

    <input type="text" name="fname" autofocus="autofocus" />

autocomplete属性适用所有<input>标签的类型,如文本框、复选框、单选按钮、普通按钮等。

注意:在同一页面中只能指定一个autofocus对象,当页面中的表单控件比较多时,建议为最需要聚焦的那个控件设置autofocus属性值,如页面中搜索文本框,或者许可协议的“同意”按钮等。

【示例1】下面示例演示如何应用autofocus属性。

以上代码在Chrome浏览器中的运行结果如图3.38所示。页面载入后,“同意”按钮自动获得焦点,因为通常希望用户直接单击该按钮。如果将“拒绝”按钮的autofocus属性值设置为on,则页面载入后焦点就会在“拒绝”按钮上,如图3.39所示,但从页面功用的角度来说这样并不合适。

图3.38 “同意”按钮自动获得焦点

图3.39 “拒绝”按钮自动获得焦点

【示例2】如果浏览器不支持autofocus属性,可以使用JavaScript实现相同的功能。在下面脚本中,先检测浏览器是否支持autofocus属性,如果不支持则获取指定的表单域,为其调用focus()方法,强迫其获取焦点。

3.3.3 form——归属表单

视频讲解

form属性可以设置表单控件归属的表单。适用于所有<input>标签的类型。

提示:在HTML4中,用户必须把相关的控件放在表单内部,即<form>和</form>之间。在提交表单时,在<form>和</form>之外的控件将被忽略。

【示例】form属性必须引用所属表单的id,如果一个form属性要引用两个或两个以上的表单,则需要使用空格将表单的id值分隔开。下面是一个form属性应用。

    <form action="" method="get" id="form1">
    请输入姓名:<input type="text" name="name1" autofocus/>
    <input type="submit"  value="提交"/>
    </form>
    请输入住址:<input type="text" name="address1" form="form1" />

以上代码在Chrome浏览器中的运行结果如图3.40所示。如果填写姓名和住址并单击“提交”按钮,则name1和address1分别会被赋值为所填写的值。例如,如果在姓名处填写“zhangsan”,住址处填写“北京”,则单击“提交”按钮后,服务器端会接收到“name1=zhangsan”和“address1=北京”。用户也可以在提交后观察浏览器的地址栏,可以看到有“name1=zhangsan&address1=北京”字样,如图3.41所示。

图3.40 form属性的应用

图3.41 地址中要提交的数据

3.3.4 表单重写

视频讲解

HTML5新增5个表单重写属性,用于重写<form>标签属性设置,简单说明如下:

 formaction:重写<form>标签的action属性。

 formenctype:重写<form>标签的enctype属性。

 formmethod:重写<form>标签的method属性。

 formnovalidate:重写<form>标签的novalidate属性。

 formtarget:重写<form>标签的target属性。

注意:表单重写属性仅适用于submit和image类型的input元素。

【示例】下面示例设计通过formaction属性,实现将表单提交到不同的服务器页面。

3.3.5 height和width——高和宽

视频讲解

height和width属性仅用于设置<input type="image">标签的图像高度和宽度。

【示例】下面示例演示了height与width属性的应用。

    <form action="testform.asp" method="get">
    请输入用户名: <input type="text" name="user_name" /><br />
    <input type="image" src="images/submit.png" width="72" height="26" />
    </form>

源图像的大小为288×104像素,使用以上代码将其大小限制为72×26像素,在Chrome浏览器中的运行结果如图3.42所示。

图3.42 form属性的应用

3.3.6 list——列表选项

视频讲解

list属性用于设置输入域的datalist。datalist是输入域的选项列表。该属性适用于以下类型的<input>标签:text、search、url、telephone、email、date pickers、number、range和color。

演示示例可参考3.4.1节datalist元素介绍。

注意:目前最新的主流浏览器都已支持list属性,不过呈现形式略有不同。

3.3.7 min、max和step——最小值、最大值和步长

视频讲解

min、max和step属性用于为包含数字或日期的input输入类型设置限值,适用于date pickers、number和range类型的<input>标签。具体说明如下:

 min属性:设置输入框所允许的最小值。

 max属性:设置输入框所允许的最大值。

 step属性:为输入框设置合法的数字间隔(步长)。例如,step="4",则合法值包括-4、0、4等。

【示例】下面示例设计一个数字输入框,并规定该输入框接受介于0到12的值,且数字间隔为4。

在Chrome浏览器中运行,如果单击数字输入框右侧的微调按钮,则可以看到数字以4为步进值递增,如图3.43所示;如果输入不合法的数值,如5,单击“提交”按钮时会显示错误提示,如图3.44所示。

图3.43 list属性应用

图3.44 显示错误提示

3.3.8 multiple——多选

视频讲解

multiple属性可以设置输入域一次选择多个值。适用于email和file类型的<input>标签。

【示例】下面在页面中插入一个文件域,使用multiple属性允许用户一次提交多个文件。

在Chrome浏览器中的运行结果如图3.45所示。如果单击“选择文件”按钮,则会允许在打开的对话框中选择多个文件。选择文件并单击“打开”按钮后会关闭对话框,同时在页面中会显示选中文件的个数,如图3.46所示。

图3.45 multiple属性的应用

图3.46 显示被选中文件的个数

3.3.9 pattern——匹配模式

视频讲解

pattern属性规定用于验证input域的模式(pattern)。模式就是JavaScript正则表达式,通过自定义的正则表达式匹配用户输入的内容,以便进行验证。该属性适用于text、search、url、telephone、email和password类型的<input>标签。

提示:读者可以在http://html5pattern.com上面找到一些常用的正则表达式,并将它们复制、粘贴到自己的pattern属性中进行应用。

【示例】下面示例使用pattern属性设置文本框必须输入6位数的邮政编码。

在Chrome浏览器中的运行结果如图3.47所示。如果输入的数字不是6位,则会出现错误提示,如图3.48所示。如果输入的并非规定的数字,而是字母,也会出现这样的错误提示,因为pattern="[0-9]{6}"中规定了必须输入0~9这样的阿拉伯数字,并且必须为6位数。

图3.47 pattern属性的应用

图3.48 出现错误提示

3.3.10 placeholder——替换文本

视频讲解

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

【示例】下面是placeholder属性的一个应用示例。请注意比较本例与上例提示方法的不同。

以上代码在Chrome浏览器中的运行结果如图3.49所示。当输入框获得焦点并输入字符时,提示文字消失,如图3.50所示。

图3.49 placeholder属性的应用

图3.50 提示消失

3.3.11 required——必填

视频讲解

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

【示例】下面示例使用required属性规定文本框必须输入内容。

在Chrome浏览器中的运行结果如图3.51所示。当输入框内容为空并单击“提交”按钮时,会出现“请填写此字段”的提示,只有输入内容之后才允许提交表单。

图3.51 提示“请填写此字段”