表单效验

 

参考:https://developer.mozilla.org/zh-CN/docs/Learn/HTML/Forms/Data_form_validation

表单验证帮助我们确保用户以正确格式填写表单数据,确保提交的数据能使我们的应用程序正常工作。

方式:

1:JavaScript 校验,这是可以完全自定义的实现方式;

2:HTML5 内置的校验,这不需要 JavaScript ,而且性能更好,但是不能自定义校验过程。

HTML5 一个特别有用的新功能就是,可以在不写一行脚本代码的情况下,即对用户的输入进行数据校验,这都是通过表单元素的校验属性实现的,这些属性可以让你定义一些规则,用于限定用户的输入,比如某个输入框是否必须输入,或者某个输入框的字符串有最大长度限制,或者某个输入框必须输入一个数字、邮箱地址等,如果表单中输入的数据都符合这些限定规则,那么表示这个表单校验通过,否则则认为校验未通过。

当一个元素校验通过时:

    该元素将可以通过 CSS 伪类 :valid 进行特殊的样式化;

    如果用户尝试提交表单,如果没有其它的控制来阻止该操作(比如JavaScript即可阻止提交),那么该表单的数据会被提交

如果一个元素未校验通过:

   该元素将可以通过 CSS 伪类 :invalid 进行列表的样式化;

    如果用户尝试提交表单,浏览器会展示出错误消息,并停止表单的提交。

required 属性:

 required属性 — 使输入成为必需的。 当设置此属性时,如输入为空(输入也将被视为无效),该表单将不会提交(并将显示错误消息)。

<form>
  <label for="choose">Would you prefer a banana or cherry?</label>
  <input id="choose" name="i_like" required>
  <button>Submit</button>
</form>

 

使用正则表达式验证:

验证功能是 pattern 属性。

<form>
  <label for="choose">Would you prefer a banana or a cherry?</label>
  <input id="choose" name="i_like" required pattern="banana|cherry">
  <button>Submit</button>
</form>

注意: 一些 <input> 元素类型不需要pattern 属性进行验证. 指定特定 email 类型 就会使用匹配电子邮件格式的正则表达式来校验

注意:  <textarea> 元素不支持pattern 属性.

 

强制条目的长度:

   所有文本框 (<input> 或 <textarea>) 可以强制使用minlength 和 maxlength 属性

 

  在数字条目中 (i.e. <input type="number">), 该 min 和 max 属性也能强制验证长度. 

 

自定义错误信息:

自定义这些消息的外观和文本, 你必须使用 JavaScript; 不能使用 HTML 和 CSS 来改变.

 

 

使用 JavaScript校验表单:

如果你想控制原生错误信息的外观和感觉,或者你想处理不支持HTML内置表单验证的浏览器,则必须使用 Javascript。

现在越来越多的浏览器支持约束验证API,并且它正在变得可靠。这些 API 由一组方法和属性组成,可在每个表单元素上调用。

用于校验的 API 及属性:

 

校验约束 API 的方法:

 

例子:

表单使用 novalidate 属性关闭浏览器的自动验证;这允许我们使用脚本控制表单验证。但是,这并不禁止支持约束验证 API 的应用和以下 CSS 伪类::valid:invalid:in-range 、:out-of-range 。

<form novalidate>
  <p>
    <label for="mail">
      <span>Please enter an email address:</span>
      <input type="email" id="mail" name="mail">
      <span class="error" aria-live="polite"></span>
    </label>
  </p>
  <button>Submit</button>
</form>

aria-live 属性确保我们的自定义错误信息将呈现给所有人,包括使用屏幕阅读器等辅助技术的人。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值