新增表单控件

控件名称 含义
type:datetime 显示完整日期
type:datetime-local 显示完整日期,不含时区
type:time 显示时间,不含时区
type:date 显示日期
type:week 显示周
type:month 显示月
type:search 搜索类型,有清空文本的按钮
type:range 特定范围内的数值选择器,属性:minmaxstep
type:number 只能包含数字的输入框
type:color 颜色选择器
type:email email 地址类型,当格式不符合 email 格式时,提交是不会成功的,会出现提示 “只有当格式相符时,提交才会通过”,
在移动端获焦的时候会切换到英文键盘
type:tel 电话类型,在移动端获焦的时候会切换到数字键盘
type:url url 类型,当格式不符合 url 格式时,提交是不会成功的,会出现提示 “只有当格式相符时,提交才会通过”

示例代码

<form>
  <p>
    <span>datetime-local</span>
    <input type="datetime-local" />
  </p>
  <p>
    <span>date</span>
    <input type="date" />
  </p>
  <p>
    <span>time</span>
    <input type="time" />
  </p>
  <p>
    <span>week</span>
    <input type="week" />
  </p>

  <p>
    <span>number</span>
    <input type="number" /><!-- chrome支持,Safari,IB不支持 -->
  </p>
  <p>
    <span>email</span>
    <input type="email" />
  </p>
  <p>
    <span>color</span>
    <input type="color" />
  </p>
  <p>
    <span>range</span>
    <input type="range" min="1" max="100" name="range" /><!-- chrome, Safaris -->
  </p>
  <p>
    <span>search</span>
    <input type="search" name="search" /><!-- chrome支持,Safari支持一点,IE 不支持 -->
  </p>
  <p>
    <span>url</span>
    <input type="url" />
  </p>
  <p>
    <span>submit</span>
    <input type="submit" />
  </p>
</form>

效果展示

新增表单属性

表单属性名称 含义
placeholder 输入框提示信息,适用于 typetextsearchurltelemailpassword 类型的 input
autofocus 指定表单获取输入焦点
required 此项必填,不能为空
pattern 正则验证 pattern=“\d{1,5}”
formaction submit 里定义提交地址
listdatalist 为输入框构造一个选择列表,list 值为 datalist 标签的 id

示例代码

<form>
  <p>
    <span>placeholder</span>
    <input type="url" placeholder="请输入 url" />
  </p>
  <p>
    <span>autofocus</span>
    <input type="url" autofocus />
  </p>
  <p>
    <span>pattern</span>
    <input type="text" pattern="\d{1,5}" />
  </p>
  <p>
    <span>required</span>
    <input type="url" required />
  </p>
  <p>
    <span>list、datalist</span>
    <input name="email" type="email" list="emaillist" />
    <datalist id="emaillist">
      <option value="test1@test.com">test1@test.com</option>
      <option value="test2@test.com">test2@test.com</option>
    </datalist>
  </p>
  <p>
    <span>submit</span>
    <input type="submit" />
  </p>
</form>

效果展示

表单验证反馈

表单验证 含义
valueMissing 输入值为空时返回 true
typeMismatch 控件值与预期类型不匹配返回 true
patternMismatch 输入值不满足 pattern 正则返回 true
tooLong 超过 maxLength 最大限制返回 true
rangeUnderflow 验证的 range 最小值返回 true
rangeOverflow 验证的 range 最大值返回 true
stepMismatch 验证 range 的当前值是否符合 minmaxstep 的规则返回 true
customError 不符合自定义验证返回 true

示例代码

<body>
  <form>
    <p>
      <span>email</span>
      <input type="email" value="sb" />
    </p>
    <p>
      <span>submit</span>
      <input type="submit" value="提交" />
    </p>
  </form>
  <section>
    <p>展示 validity 对象 <strong>ValidityState</strong></p>
    <section id="content"></section>
  </section>

  <script type="text/javascript">
    window.onload = function() {
      var inputEl = document.querySelector("input");
      var content = document.querySelector("#content");

      inputEl.addEventListener("invalid", function() {
        // this.validity 不可枚举,改用此方法
        const validityState = {
          valueMissing: this.validity.valueMissing,
          typeMismatch: this.validity.typeMismatch,
          patternMismatch: this.validity.patternMismatch,
          tooLong: this.validity.tooLong,
          tooShort: this.validity.tooShort,
          rangeUnderflow: this.validity.rangeUnderflow,
          rangeOverflow: this.validity.rangeOverflow,
          stepMismatch: this.validity.stepMismatch,
          customError: this.validity.customError,
          valid: this.validity.valid
        };
        content.innerHTML = Object.entries(validityState).map(([k, v]) => `<p><span>${k}:</span><span>${v}</span></p>`).flat(Infinity).join('');

        if (inputEl.value === 'sb')
          inputEl.setCustomValidity('请不要输入敏感词!');
        else
          inputEl.setCustomValidity('');
      })
    }
  </script>
</body>

效果展示

关闭验证

form 标签上加 novalidate 属性,可以禁用 h5 默认的表单验证效果

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 新增表单控件
    1. 1.1. 示例代码
    2. 1.2. 效果展示
  2. 2. 新增表单属性
    1. 2.1. 示例代码
    2. 2.2. 效果展示
  3. 3. 表单验证反馈
    1. 3.1. 示例代码
    2. 3.2. 效果展示
  4. 4. 关闭验证