新增的有哪些控件:

1.email、2.url、3.number、4.range
5.Date pickers (date, month, week, time, datetime, datetime-local)
6.search、7.color、8.tel

type=“number”

H5 列表demo h5列表控件_输入框


H5 列表demo h5列表控件_控件_02

type=“range”

H5 列表demo h5列表控件_H5 列表demo_03

type=Date Pickers(日期选择器)

H5 列表demo h5列表控件_控件_04

type=”tel”

tel并不是来验证手机号码的,因为全球手机号码格式的标准不同。
它的目的是能够在移动端打开数字键盘,
而数字键盘就限制了用户只能填写数字而不能填写其他字符。(在PC端无法展示)

浏览器兼容

H5 列表demo h5列表控件_表单_05

<datalist></datalist>

说明:数据列表标签,定义输入框的选项列表,
选项列表是通过该元素内的option元素进行创建的。
该元素与input元素配合使用,来定义input可能的值。

用法:要把这个datalist元素定义的选项列表绑定到输入框,
将input元素的list属性的值设置为datalist元素的id属性值
<datalist id="searchList">
        <option label="top1">鹿晗送祝福</option>
        <option label="top2">李荣浩结婚</option>
        <option label="top3">向佐郭碧婷</option>
    </datalist>
    <input type="text" placeholder="请输入搜索内容" list="searchList">

H5 列表demo h5列表控件_H5 列表demo_06

output

输出标签,标记定义一些输出类型,计算表单结果。
注意:oninput 事件是在用户输入时触发的事件
<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">
    <!-- 输入一定范围内的数值 -->
    0<input type="range" id="a" value="50">100
    +<input type="number" id="b" value="50">=
    <output name="x" for="a b"></output>
</form>

属性解析:

①for 规定一个或多个元素的 id 列表,以空格分隔。
这些元素描述了计算中使用的元素与计算结果之间的关系
②name 规定 <output> 元素的名称

optgrou

选项组标签,将select元素中的选项进行逻辑分类,
在select元素中直接定义,不允许嵌套,既不能进行第二次分组
①disabled:加载时禁用该选项组
②label: 用来定义分组显示的标签名
<select>
        <optgroup label="国漫">
            <option>哪吒</option>
            <option>葫芦娃</option>
        </optgroup>
        <optgroup label="日漫">
            <option>奥特曼</option>
            <option>海贼王</option>
        </optgroup>
    </select>

H5 列表demo h5列表控件_H5 列表demo_07

fieldset

当一组表单元素放到 <fieldset> 标签内时,浏览器会以特殊方式来显示它们,
	它们可能有特殊的边界、3D 效果,或者甚至可创建一个子表单来处理这些元素。
	常与legend 元素配合使用:<legend>为 fieldset 元素定义标题

H5 列表demo h5列表控件_输入框_08

H5 列表demo h5列表控件_控件_09

标签属性

1.required 属性:
	表明该元素是必填项,当提交表单的时候会自动验证该元素的内容是否不为空。

H5 列表demo h5列表控件_H5 列表demo_10

2.autofocus 属性
	在打开页面时使元素自动获取焦点,只有当一个页面是以使用某个控件为主要目的时,
	才对该控件使用 autofocus 属性。一个页面只能有一个控件有该属性。

H5 列表demo h5列表控件_控件_11

H5 列表demo h5列表控件_表单_12

3.list属性:
	指定一个datalist作为下拉提示单,输入框通过 list 属性和 datalist 关联起来;
	value 为选中后输入框的内容(可以不加),label 为 value 的辅助描述性内容。

<input type="text" list="field">
    <datalist id="field">
      <option value="嵌入式" label="c"></option>
      <option value="前端" label="web"></option>
      <option value="后端" label="java"></option>
    </datalist>

H5 列表demo h5列表控件_输入框_13

4.multiple属性:
	文件上传多选或多个邮箱地址 ,可以选择多个文件;
	在email中,可以输入多个邮箱地址,以逗号分隔

H5 列表demo h5列表控件_表单_14

5.pattern属性:
	规定用于验证 input 域的模式,模式为正则表达式,验证表单元素

<label>
        帐号:<input 
                   type="text" 
                    required 
                    autofocus 
                    placeholder="请输入账号" 
                    pattern="^[0-9a-zA-Z]{6,16}$" />
                    请输入a-zA-Z0-9且长度6-16位的字符
</label>

H5 列表demo h5列表控件_输入框_15

6.autocomplete属性:
	规定表单是否应该启用自动完成功能,适用于 <form>,
	部分输入框和form都可以设置自动提示 off关闭,on开启(默认是on)
	自动补全属性,当表单元素设置了自动完成功能后,
	会记录用户输入过的内容,双击表单元素会显示历史输入。
	取值:on:打开 ,off:关闭

H5 列表demo h5列表控件_H5 列表demo_16

H5 列表demo h5列表控件_输入框_17

7.novalidate属性:
	取消表单验证,规定当提交表单时不对其进行验证,如果使用该属性,
	则表单不会验证表单的输入
	通过将novalidate属性放置到form元素上,form元素的原生校验特征就会忽略,
	这样就可以防止它同你的自己写的JavaScript的校验方法起冲突。

H5 列表demo h5列表控件_控件_18

8.formnovalidate 属性:
	<input> 标签使用该属性,则提交表单时按钮不会执行验证过程

H5 列表demo h5列表控件_H5 列表demo_19


10、禁用属性:disabled

11、只读属性:readonly(只读文本框): true false

12、长度属性:size=“初始长度”

13、选中属性:selected(默认选中项) 【列表】

14、选中属性:checked (单选按钮选中状态)【单选、复选】

15、输入的最大字符数 :maxlength:type为text或password时

16、指定按钮是否被选中:checked:type为radio或checkbox时

17、setCustomValidity:修改 pattern 校验失败时,默认提示信息

新增表单事件

①oninput:当元素中的内容改变时触发
②oninvalid:当验证不通过时触发
<form>
    用户名:<input type="text" required placeholder="请输入用户名" id="user"><br>
    手机号:<input type="tel" id="phone" required 
            pattern="^1(3|4|5|6|7|8|9)\d{9}$"><br>
    <input type="submit"> <br>
</form>
<script>
    document.getElementById("user").oninput = function (ev) {
        console.log(this.value);
    };
    document.getElementById("phone").oninvalid = function (ev) {
        // 设置默认提示信息
        this.setCustomValidity("请输入正确的手机号码!")
    };
</script>