前言:
HTML5在原本已有表单元素的基础上新增了新的表单元素和属性,增强了表单元素的功能。
第一类.新增input(type)类型
1.type为email
作用:email 类型用于包含 email 地址的输入域。
email示例:如果内容不满足邮箱格式,提交表单会有错误提示信息。
<body> <form action="#"> 邮箱:<input type="email"> <input type="submit" value="提交"> </form> </body>
2.type为url
作用:url类型用于包含 网址的输入域。
url示例:如果内容不满足网址格式,提交表单会有错误提示信息。
<body> <form action="#"> 网址:<input type="url"> <input type="submit" value="提交"> </form> </body>
3.type为number
作用:number 类型用于包含数值的输入域。
number示例:输入框中只能输入number类型值,不能输入其他类型的值
<form action="#"> 数量:<input type="number" value="60" max="100" min="0" step="3"> <br> <input type="submit" value="提交"> </form>
4.type为search
作用:search 类型用于搜索域,比如站点搜索或 Google 搜索
search示例:
<body> <form action="#"> 请输入商品名称:<input type="search"> <br> <input type="submit" value="提交"> </form> </body>
5.type为range
作用:range 类型用于包含一定范围内数字值的输入域(可以用作音量键)
range示例:
<body> <form action="#"> 范围:<input type="range" max="100" min="0" value="50"> <br> <input type="submit" value="提交"> </form> </body>
6.type为color
作用:输入类型用于规定颜色
color示例:
<body> <form action="#"> 颜色:<input type="color"> <br> <input type="submit" value="提交"> </form> </body>
7.type为tel
作用:tel 输入类型用于包含电话号码的输入字段
tel示例:
<body> <form action="#"> 电话:<input type="tel"> <br> <input type="submit" value="提交"> </form> </body>
8.type为image
作用:image 输入类型将图像定义为提交按钮。
image示例:
<body> <form action="#"> <input type="image" src="./img/eg_submit.jpg" alt="Submit"/> </form> </body>
9.type为日期相关类型
类型:
date - 选择日、月、年
month - 选择月、年
week - 选择周、年
time - 选择时间(时、分)
datetime - 选择时、日、月、年(UTC 时间)
datetime-local - 选择时、日、月、年(本地时间)
日期示例:
<body> <form action="#"> 时分:<input type="time"> <br> 年月日:<input type="date"> <br> 年月日 时分:<input type="datetime"><br> 年月日 时分:<input type="datetime-local"> <br> 年月:<input type="month"> <br> 年周:<input type="week"> <input type="submit" value="提交"> </form> </body>
第二类.新增form属性
1.noValidate属性
作用:novalidate 属性规定当提交表单时不对其进行验证。
noValidate属性示例:
<body> <form action="#" novalidate> <!-- 当提交表带内容时,不会对邮箱输入框进行校验 --> 邮箱:<input type="email" placeholder="请输入你的邮箱地址..."> <input type="submit"> </form> </body>
2.autocomplete属性
作用:autocomplete属性规定是否开启表单内容的自动补全功能。
注意:
1.表单元素的内容必须提交过。
2.需要自动补全的表单元素需要设置name属性。
autocomplete属性示例:
<body> <form action="#" autocomplete="on"> <!-- 当再次输入内容时,会根据之前输入的内容完成自动补全 --> 邮箱: <input type="email" placeholder="请输入你的邮箱地址..." name="email"> <input type="submit"> </form> </body>
第三类.新增input属性
1.form属性
作用:HTML4中表单内的从属元素必须书写在表单内部,而HTML5中,表单元素可以写在任何地方,然后给元素指定一个form属性,属性值为该表单的id,这样就可以声明元素从属于指定表单。
form属性示例:
<body> <form action="#" id="testForm"> 用户名:<input type="text"> </form> <!-- 此处密码输入框也从属于form表单 --> 密码:<input type="password" form="testForm"> </body>
2.formaction属性
理解:formaction属性类似于form表单的action属性,设置表单提交路径
作用:HTML4中表单内的所有元素只能通过表单的action属性被统一提交到另一个页面,而HTML5中,可以为所有的提交按钮增加不同的formAction属性,使单击不同的提交按钮将表单提交到不同的页面。
formAction属性示例:
<body> <form id="testForm"> <input type="submit" value="s1" formaction="xx.jsp"> <input type="submit" value="s2" formaction="yy.jsp"> <input type="submit" value="s3" formaction="zz.jsp"> </form> </body>
3.formmethod属性
理解:formmethod属相类似form表单的method属性,设置表单提交方式
作用:HTML4中一个表单只能由一个method属性来统一指定提交方法。HTML5中,可以使用formmethod属性来对每一个表单元素分别指定不同的提交方法。
取值:常用提交方式是get、post,当然也有其他的提交方式。
formmethod属性示例:
<body> <form id="testForm"> <input type="submit" name="s1" value="v1" formmethod="post" formaction="xx.jsp"> <input type="submit" name="s2" value="v2" formmethod="get" formaction="yy.jsp"> </form> </body>
4.formenctype属性
理解:formenctype属性类似form表单的enctype属性,设置表单数据编码
作用:HTML4中表单具有enctype属性,用于指定如何对表单内的数据编码。HTML5中,可以使用formenctype属性对表单元素分别指定不同的编码方式。
formenctype属性示例:
<body> <form id="testForm"> <!-- 表单数据中的空格变成+号,但不对特殊字符处理。 --> <input type="text" formenctype="text/plain"> <!-- 不对字符进行编码,在使用包含文件上传控件的表单时,必须使用此类型 --> <input type="text" formenctype="multipart/form-data"> <!-- 发送前编码所有字符,当表单action为get时,将表单数据转成字符串。 --> <input type="text" formenctype="application/x-www-form-urlencoded"> </form> </body>
5.formtarget属性
理解:formtarget属性类似form表单的target属性,设置新页面打开位置
作用:HTML4中表单具有target属性,用于指定在何处打开表单提交后所需要加载的页面。HTML5中,可以对多个提交按钮分别使用formtarget属性来指定提交后在何处打开页面。
取值:_blank,_self,_parent,_top,_framename(指定name的框架)
formtarget属性示例:
<body> <form> <!-- _blank在新的空白页面打开 --> <input type="submit" value="s1" formtarget="_blank" formaction="xx.jsp"> <!-- _self在当前页面打开 --> <input type="submit" value="s2" formtarget="_self" formaction="yy.jsp"> <!-- _parent在当前框架的父框架打开 --> <input type="submit" value="s3" formtarget="_parent" formaction="zz.jsp"> <!-- _top在当前窗口打开 --> <input type="submit" value="s3" formtarget="_top" formaction="yy.jsp"> <!-- _在指定name的frmae中打开 --> <input type="submit" value="s3" formtarget="_framename" formaction="ff.jsp"> </form> </body>
6.autofocus属性
作用:为文本框、选择框或按钮控件加上autofocus属性,当画面打开时,该控件自动获得光标焦点。
autofocus属性示例:当页面打开时,密码框自动获得焦点。
<body> <form> 用户名:<input type="text"><br/> 密码:<input type="text" autofocus> </form> </body>
7.required属性
作用:HTML5新增的required属性可以应用在大多数输入元素上,提交时如果内容为空,不允许提交并有提示信息显示。
required属性示例:
<body> <form id="testForm" action="#"> 用户名:<input type="text" name="userName" required><br/> <input type="submit" value="提交"> </form> </body>
8.labels属性
作用:HTML5中为所有可使用标签的表单元素、button、select元素等,定义了一个labels属性,属性值为NodeList对象,代表该元素所绑定的标签元素所构成的集合。
labels属性示例:
<body> <form id="testForm" action="#"> <label id="label" for="txt_name">姓名:</label> <input type="text" id="txt_name"> <input type="button" id="btnValidate" value="验证" onclick="Validate()"> </form> <script> function Validate() { var txtName = document.getElementById('txt_name') var btn = document.getElementById('btnValidate') var form = document.getElementById('testForm') if (txtName.value.trim() === ''){ var label = document.createElement('label') // 新建一个label标签,同时让其和输入框关联 label.setAttribute('for', 'txt_name') form.insertBefore(label, btn) // 此时输入框的labels属性就是一个list txtName.labels[1].innerHTML = '请输入姓名' } } </script> </body>
9.标签的control属性
作用:HTML5中,可以在标签内部放置一个表单元素,通过该标签的control属性来访问该表单元素。
control属性示例:
<body> <form id="testForm" action="#"> <label id="label"> 用户名: <input type="text"><br/> <small>请输入登录名</small> </label> <input type="button" value="设置为默认值" onclick="setValue()"> </form> <script> function setValue(){ var label = document.getElementById("label") // 通过label的control属性获取到其中包裹的表单元素 var txtbox = label.control txtbox.value = "010010" } </script> </body>
10.文本框的placeholder属性
作用:placeholder当文本框处于未输入状态时显示的提示信息。当文本框处于未输入状态且未获取光标焦点时,模糊显示输入提示文字。
placeholder属性示例:
<body> <form id="testForm" action="#"> 用户名:<input type="text" placeholder="请输入用户名"> </form> </body>
11.复选框的indeterminate属性
作用:HTML4中复选框只是选取与非选取两种状态。HTML5中,可以在JavaScript脚本代码中对该元素使用indeterminate属性,以说明复选框处于"尚未明确是否选取"状态。
状态:复选框选中、未选中、不明状态。
indeterminate属性示例:
<body> <form id="testForm" action="#"> <input type="checkbox" id="cb" indeterminate>属性测试 </form> <script> var cb = document.getElementById("cb") cb.indeterminate = true </script> </body>
12.image提交按钮(height/width属性)
作用:为图像设置宽、高。
height/width属性示例:
<body> <form id="testForm" action="test.jsp" method="post"> 姓名:<input type="text" name="userName"> <input type="image" src="./img/eg_submit.jpg" alt="编辑" width="20px" height="20px"> </form> </body>
13.文本框list属性
作用:HTML5中为单行文本框增加了一个list属性,该属性的值为某个datalist元素的id。datalist元素也是HTML5新增元素,该元素类似选择框,也允许自行输入。
list属性示例:
<body> <form id="testForm" action="test.jsp" method="post"> <input type="text" list="greetings"> <datalist id="greetings"> <option value="数学"></option> <option value="英语"></option> <option value="机械"></option> </datalist> </form> </body>
14.文本框autocomplete属性
作用:帮助输入框内容的自动补全。
注意:
1.表单元素的内容必须提交过。
2.需要自动补全的表单元素需要设置name属性。
取值:on, off,空字符串
autocomplete属性示例:
<body> <form id="testForm" action="test.jsp" method="post"> <!-- 当输入的内容和datalist中的选项匹配,输入框会自动补全 --> <input type="text" list="greetings" autocomplete="" name="text"> <datalist id="greetings"> <option value="数学"></option> <option value="英语"></option> <option value="机械"></option> </datalist> </form> </body>
15.文本框pattern属性
作用:HTML5中,对input元素使用pattern属性,属性值为某个格式的正则表达式,提交时内容会进行正则表达式的验证。
pattern属性示例:
<body> <form id="testForm" action="test.jsp" method="post"> <!-- 当输入的内容和pattern格式不相符时,不允许提交并会有相应提示信息 --> <input type="text" pattern="[A-Z]{3}"> <input type="submit" value="提交"> </form> </body>
16.文本框selectionDirection属性
作用:HTML5中对input和textarea元素增加了SelectionDirection属性。属性表示选取内容方向。
应用场景:获取用户的操作(从左往右选文字或从右往左选文字),根据用户操作执行相应的程序
取值:默认为forward
forward -- 表示用户正向选取文字内容。
backward -- 表示用户反向选取文字内容。
selectionDirection属性示例:
<body> <form id="testForm" action="test.jsp" method="post"> <input type="text" name="text"> <input type="button" value="点击我" onclick="AD()"> </form> <script> function AD(){ var control = document.forms[0]["text"] var direction = control.selectionDirection console.log(direction) } </script> </body>
17.mutiple属性
作用:multiple 属性规定输入域中可选择多个值
应用场景:
1.当上传多个文件时,可以使用此属性
2.在email中,允许输入多个邮箱地址(比如抄送多人),用逗号隔开。
<body> <form action="#" method="get"> <input type="file" name="img" multiple="multiple" />
<input type="email" name="email" multiple="multiple" />
<input type="submit" /> </form> <p>当您浏览文件时,请试着选择多个文件。</p> </body>
第四类.新增表单元素
1.datalist元素
作用:datalist 元素规定输入域的选项列表。
注意:
如果type类型是'url'类型,那么value值必须以'http://'开头,因为这才是合法的url值
datalist元素示例:
<body> <form action="#" autocomplete="on"> <!-- datalist可以为输入框预设几个值,input通过list属性绑定datalist的id --> <input type="text" list="fruits"/> <datalist id="fruits"> <option label="苹果" value="苹果" /> <option label="香蕉" value="香蕉" /> <option label="芒果" value="芒果" /> </datalist> </form> </body>
2.keygen元素
作用:keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
keygen 元素示例:
<body> <form action="#" method="get"> Username: <input type="text" name="usr_name" /> Encryption: <keygen name="security" /> <input type="submit" /> </form> </body>
3.output元素
作用:output 元素用于不同类型的输出。
output元素示例:
<body>
<form οnsubmit="return false">
<input id="num_a" /> +
<input id="num_b" /> =
<output id="result" onforminput="resCalc()"></output>
</form>
<script type="text/javascript">
function resCalc()
{
numA=document.getElementById("num_a").value;
numB=document.getElementById("num_b").value;
document.getElementById("result").value=Number(numA)+Number(numB);
}
</script>
</body>
第五类.新增表单事件
1.oninput事件
作用:监听当前指定元素内容的改变,只要内容改变(添加内容,删除内容)事件就会触发。
举例:
<body> <form action="" onsubmit="haha();"> 用户名: <input type="text" name="userName" id="userName"> <br> 电话: <input type="tel" name="userPhone" id="userPhone" pattern="^1\d{10}$"> <br> <input type="submit" id="submit"> </form> <script> /*1.oninput:监听当前指定元素内容的改变:只要内容改变(添加内容,删除内容),就会触发这个事件*/ document.getElementById("userName").oninput = function () { console.log("oninput:" + this.value); } </script> </body>
2.oninvalid事件
作用:当表单提交验证不通过时会触发该事件。
举例:
<body> <form action="" onsubmit="haha();"> 用户名: <input type="text" name="userName" id="userName"> <br> 电话: <input type="tel" name="userPhone" id="userPhone" pattern="^1\d{10}$"> <br> <input type="submit" id="submit"> </form> <script> /*oninvalid:当验证不通过时触发*/ document.getElementById("userPhone").oninvalid = function () { /*设置默认的提示信息*/ this.setCustomValidity("123"); //console.log(this.validity); } </script> </body>