HTML5自定义表单验证错误提示信息

article/2025/8/29 17:33:42

有如下HTML结构:

<form action="ok.html"><input type="text" pattern="\d{1,3}"  required id="myinput"><p><input type="submit" value="提交"></p>
</form>

当提交的信息出错的时候,默认的HTML5提示是:

“请填写此字段”  --  没有填写内容,违反了 required “必填”要求

“请匹配要求的格式”  -- 内容不合法,违反了 pattern 的正则要求。

如何修改错误提示信息呢?

HTML5为所有表单元素添加了一个JS属性:input.validity      “有效,合法性” ,并且添加了个事件 invalid “出错事件,内容无效事件”。

注:不同于 onerror事件,onerror 事件会在文档或图像加载过程中发生错误时被触发。

我们可以利用input标签的invalid事件,输出  input.validity 看看。

  var myinput  = document.querySelector("#myinput");function  invalidFun(e){var tag = e.target ; // input标签console.info(tag.validity); }// invalid  输入内容错误事件。包括,为空,格式错误等myinput.addEventListener("invalid" ,invalidFun,false);

valid: false  //当前输入是否有效

badInput: false  //输入无效,如number框输入abc

patternMismatch: false //正则表达式验证失败

rangeOverflow:  false //输入值超过max的限定

rangeUnderflow: false //输入值小于min的限定

tooLong : false //输入的字符数超过maxlength

tooShort :   false //输入的字符数小于minlength

stepMismatch : false //输入的数字不符合step限制

typeMismatch : false //输入值不符合email、url的验证

valueMissing : false //未输入值,违反了required要求

customError :  false //是否存在自定义错误

上述属性值的特性:
  
(1)只要有一个验证方面错误,某个属性就为true,valid值为false
  
(2)只有没有任何验证错误,所有的属性都为false,valid才能为true
 
 (3)上述的每个错误在浏览器内部都有一个预定义的错误提示消息
 
 (4)所有的错误消息中,只要存在“自定义的错误消息”,浏览器只显示自定义的错误消息,优先级高于浏览器预定义的错误消息
 
 (5)当前没有自定义错误消息,所以customError :  false 

如果要自定义错误信息,可以判断错误的类型:

 var myinput  = document.querySelector("#myinput");function  invalidFun(e){var tag = e.target ; // 标签console.info(tag.validity);if( tag.validity.valueMissing ){myinput.setCustomValidity("内容必须要填哦");}else if( tag.validity.patternMismatch ){myinput.setCustomValidity("格式不正确!请输入合法的三位数。");}else{myinput.setCustomValidity("其他错误");}}// invalid  输入内容错误事件。包括,为空,格式错误等myinput.addEventListener("invalid" ,invalidFun,false);

设置自定义错误消息的方法:
input.setCustomValidity('错误提示消息');  //这个相当于将input.validity.customError:true


但是,当表单元素没有错误的时候,需要取消自定义错误消息,否则表单无法提交:
input.setCustomValidity("");     //这个相当于将input.validity.customError:false

var myinput  = document.querySelector("#myinput");function  invalidFun(e){var tag = e.target ; // 标签console.info(tag.validity);if( tag.validity.valueMissing ){myinput.setCustomValidity("内容必须要填哦");}else if( tag.validity.patternMismatch ){myinput.setCustomValidity("格式不正确!请输入合法的三位数。");}else{myinput.setCustomValidity("其他错误");}}// invalid  输入内容错误事件。包括,为空,格式错误等myinput.addEventListener("invalid" ,invalidFun,false);// 输入的时候没有错误了,就要取消自定义错误提示,否则无法提交表单function  validFun(e){var tag = e.target ; // 标签console.info(tag.validity);myinput.setCustomValidity("");}myinput.addEventListener("input" ,validFun,false);

表单提交后,发生事件顺序如下:
(1)submit按钮的click事件,若取消默认事件,则终止
(2)html5表单验证和提示,若表单验证不通过,则提示第一个不合法输入,并终止
(3)form表单的submit事件,若取消默认事件,则终止

所以,可以看到HTML5自带的验证,发生在表单的onsubmit事件之前。

 


http://chatgpt.dhexx.cn/article/a5f1yclC.shtml

相关文章

ElementUI表单验证 错误提示不消失原因(最全面,一次解决)

1.原因1&#xff1a;el-form-item上的 prop 网上最普遍回答 prop必须与v-model绑定的参数一致 2.原因2&#xff1a;el-form上的 :model 网上没找到&#xff0c;自己发现的&#xff0c;也是最容易忽略 el-form 标签上必须加上 :model“form” (不是常用的vue标签v-model) fo…

IntelliJ IDEA 编码过程中没有错误提示以及自动提示等等的解决方法

出现这种问题&#xff0c;有可能你开了“Power save mode”&#xff0c;模式&#xff0c;关闭即可&#xff01; 设置路径&#xff1a;“File/Power save mode”

VScode——打开波浪线错误提示的一种方法

按快捷键&#xff1a;ctrlshiftp &#xff0c;输入"启用错误波形曲线"&#xff0c;并点击。 启用后之后&#xff0c;比如当包含的头文件写错后&#xff0c;就会出现波浪线警告。

计算机自检报错无法开机,常见电脑开机自检BIOS错误提示解决方法

有的时候用户电脑开机自检过程中BIOS出错提示,很多对电脑不了解或者英文不懂的朋友不知道电脑哪里出了问题,出现了电脑开机自检错误的时候,一般小问题都可以自行恢复的。但是有的自检错误需要您的修正,今天给大家带来电脑开机自检BIOS错误提示的解决方法,一般常见得BIOS提…

VS发生生成错误,但错误列表无错误提示。

VS发生生成错误&#xff0c;但错误列表无错误提示。 可能原因&#xff1a; 1.生成项目框架版本可能低于引用项目框架版本。 解决办法&#xff1a; 改变生成项目框架版本&#xff0c;右键项目》属性》应用程序》目标框架

LayUI表格初始化错误(请求异常,错误提示:parsererror)

最近刚使用layui&#xff0c;不得不说挺强大的&#xff01;&#xff01; 下面是本人在layui初始化表格时踩的坑 表格初始化失败&#xff0c;并提示&#xff08;请求异常&#xff0c;错误提示&#xff1a;parsererror&#xff09; 首先说一下&#xff0c;这个是因为给表格初始化…

【VSCode】关闭讨厌的语法检查、语法自动检查、代码错误自动提示、错误提示

刚下载完 VSCode 使用的过程中&#xff0c;会发现导出提示语法错误&#xff08;但是明明是没错的&#xff09;&#xff0c;非常讨厌&#xff1a; 为什么会这样呢&#xff1f;因为编辑器无法识别这是python文件&#xff0c;所以导致其出现乱报错的情况&#xff0c;解决办法如下…

Bootstrap错误提示功能

使用Bootstrapde 时候&#xff0c;在开发阶段&#xff0c;用来提示自己出现的错误&#xff0c;那就要在JS中加入一下代码判断&#xff0c;注意&#xff1a;只在开发阶段使用 <script>// 用来提示自己出现的错误---只限于开发阶段使用(function () {var s document.c…

[idea] idea没有错误提示的解决方法(一直处于错误分析中)

20190527更新治根的解决办法 问题描述: idea没有自动报错. 例如随便写一段错误代码 这里Date类都没有导入,还赋了布尔值,大错特错,idea却没有错误提示. 按f2发现idea一直处于错误分析中的状态. 解决方法: 有三种情况,分别是: 开启了省电模式 注意不要开启省电模式. 没有…

vscode中文错误提示---插件篇

打开vscode&#xff0c;找到error Lens插件&#xff0c;如下图 2. 使用插件后&#xff0c;效果如下图

idea 2021版本错误提示反应慢

idea更新到2021后&#xff0c;最后开发经常发现&#xff0c;写了个错误语句后&#xff0c;老半天不提示错误。或者把有错误的地方改对&#xff0c;还是提示有错误&#xff0c;非得手动编译一下效果才反应出来。有时候还会出现明明某个mapper接口有方法&#xff0c;可以就是不提…

Android Studio编写代码无错误提示问题

Android studio在使用过程中,无缘无故的Java代码的变量名和类名等等拼写错误,没有提示. 抓破脑袋也没有想明白, 找了半天没有解决办法; 原因一: Power Save Mode 省电模式 一种说法是Android studio的节能模式会导致没有错误提示 但是, file>>Power Save Mode并没有打…

pycharm代码编辑的时候无法显示错误提示_已解决

今天打开自己的pycharm编译器&#xff0c;发现不能进行错误代码的提示&#xff0c;于是自己百度了一番&#xff0c;最终找到解决方法&#xff0c;这里分享给大家&#xff1a; 主要解决路线&#xff1a;pycharm–file–settings–editor–inspections–python–spelling --sever…

ensp错误提示解析详解

前言 ensp 内遇到错误时总是措手无错&#xff1f;那是因为你不了解报错提示信息是什么意思&#xff0c;ensp内报错类型一共没有几种&#xff0c;掌握后可明显提高查找错误原因速度&#xff0c;帮助我们更快完成任务需求。 命令行错误提示信息 主要分为以下四种&#xff1a; 该命…

html表单验证自定义错误提示

原文链接&#xff1a;html表单验证自定义错误提示 引言 通常情况下&#xff0c;我们在进行表单验证时&#xff08;比如提交登录注册信息&#xff09;&#xff0c;为了安全考虑以及进一步保证表单信息填写的正确性&#xff0c;会再服务端验证之前&#xff0c;在前端页面先做一次…

10种经典的错误提示信息

导读&#xff1a;原文来自itworld.com作者David Daw发表一篇《10 great error messages》&#xff0c;译文由伯乐在线整理编译《10种经典的错误提示信息》。文章内容如下&#xff1a; 对于编程来说&#xff0c;没有错误是美好的一天。但不幸的是&#xff0c;这种情况比你希望的…

brpc源码学习(一)-butex

由于brpc中引入了bthread&#xff0c;如果在bthread中使用了mutex&#xff0c;那么将会挂起当前pthread&#xff0c;导致该bthread_worker无法执行其他bthread&#xff0c;因此类似pthread和futex的关系&#xff0c;brpc引入butex来实现bthread粒度的挂起和唤醒。 首先看下but…

brpc-client

ChannelOptions&#xff1a; connect_timeout_ms&#xff1a;连接超时时间&#xff1b; timeout_ms&#xff1a;rpc超时时间&#xff0c;会起个定时器&#xff0c;通过controler::Failed方法获知&#xff1b; max_retry&#xff1a;重试次数&#xff1b;&#xff08;最终会结…

Brpc代码分析-Server端(九)

2021SCSDUSC 回到CallMethod函数。 接下来将设置各种成员&#xff0c;如超时时间&#xff0c;response等&#xff0c;因为demo中场景没有设置loadbalancer&#xff0c;所以是SingleServer 通过_serialize_request&#xff0c;这里会把request序列化到controller的request_buf&…

又一国产开源项目走向世界,百度RPC框架Apache bRPC正式成为ASF顶级项目

2023 年 1 月 26 日&#xff0c;Apache 软件基金会 (ASF) 官方正式宣布Apache bRPC 正式毕业&#xff0c;成为 Apache的顶级项目。 我听到这个消息是挺开心的&#xff0c;毕竟是又一款由国人主导的apche顶级项目&#xff0c;再次证明国内在开源界正在发挥越来越重要的作用。 …