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

article/2025/8/29 17:39:12

原文链接:html表单验证自定义错误提示
引言
通常情况下,我们在进行表单验证时(比如提交登录注册信息),为了安全考虑以及进一步保证表单信息填写的正确性,会再服务端验证之前,在前端页面先做一次验证。但是浏览器默认的表单填写错误信息并不是我们所期望的,因此需要自定义错误信息。

表单如下:

<input id="username" name="username" type="text" placeholder="用户名" maxlength="10"
       pattern="^[a-zA-Z][a-zA-Z0-9_]{0,}" required>
<input type="submit" value="注册">

默认的表单提示
情况1
当用户名为空时,浏览器提示如下图:

默认情况1
此时 input 的 validationMessage 和 validity 打印出来是:

validationMessage: ‘请填写此字段。’
patternMismatch: false
valid: false
valueMissing: true

这种情况我们一般不做修改;

情况2
当用户名填写 123 不符合预设正则表达式时,浏览器提示如下图:

默认情况2

此时 input 的 validationMessage 和 validity 打印出来是:

validationMessage: ‘请与所请求的格式保持一致。’
patternMismatch: true
valid: false
valueMissing: false

但我们往往想按照自己的意愿向用户提示的更精准一些,这时就需要自定义错误提示了;

 

情况3
当用户名填写符合预设正则表达式时:
此时 input 的 validationMessage 和 validity 打印出来是:

validationMessage: ‘’
patternMismatch: false
valid: true
valueMissing: false

直接跳转,也不需做处理。

自定义的表单提示
在 username input 下添加获得用户输入时运行的脚本:

οninput="checkOnInput(this, 'custom tip')"

function checkOnInput(input, tip) {
    input.setCustomValidity(tip);
}
情况1
当用户名为空时,浏览器提示如下图:

此时 inpu t的 validationMessage 和 validity 打印出来是:

validationMessage: ‘custom tip’
patternMismatch: false
valid: false
valueMissing: true

这种情况我们一般不做修改;

情况2
当用户名填写 123 不符合预设正则表达式时,浏览器提示如下图:

此时 input 的 validationMessage 和 validity 打印出来是:

validationMessage: ‘custom tip’
patternMismatch: true
valid: false
valueMissing: false

但我们往往想按照自己的意愿向用户提示的更精准一些,这时就需要自定义错误提示了;

情况3
当用户名填写符合预设正则表达式时,浏览器提示如下图:(与情况2相同)

此时 input 的 validationMessage 和 validity 打印出来是:

validationMessage: ‘’
patternMismatch: false
valid: false
valueMissing: false

不跳转,所以上述处理不正确。

自定义的表单提示,提示内容为空
在 username input 下添加获得用户输入时运行的脚本:

οninput="checkOnInput(this, '')"

function checkOnInput(input, tip) {
    input.setCustomValidity(tip);
}
经过测试,与默认的表单提示情况相同。

综上所述
自定义错误提示,当输入框填写为空或者正确时,打印的数据和默认提示有明显区别,与我们所期望的也相差很大。
因此设置自定义错误提示可以根据 patternMismatch 的值判断,是情况1、3时,默认处理;是情况2时,自定义处理。

处理办法
在 username input 下添加获得用户输入时运行的脚本:

οninput="checkOnInput(this, 'custom tip')"
js方法:
function checkOnInput(input, tip) {
    if (input.validity.patternMismatch === true) {
        input.setCustomValidity(tip);
    } else {
        input.setCustomValidity('');
    }
}
这样就可以只在输入错误的时候按照我们的意愿来提示啦。

原文:https://blog.csdn.net/lvlei0801/article/details/82747198 
 

附例:

JS:

(function () {
    $.extend($.fn.validatebox.defaults.rules, {
        length: {
            validator: function(value, param){
                var len = $.trim(value).length;
                return len >= param[0] && len <= param[1]
            },
            message: '字符长度必须介于{0}和{1}之间。'
        }
    });
})(jQuery);

HTML:

<input id="testLength" name="testLength" validtype="length[1,20]" required="true" style="width: 150px;" type="text" value="" />


http://chatgpt.dhexx.cn/article/17uPKM5g.shtml

相关文章

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;再次证明国内在开源界正在发挥越来越重要的作用。 …

brpc源码学习(二)-bthread的创建与切换

brpc引入m:n的线程模型&#xff0c;固定的内核线程调度运行大量的bthread以避免内核线程上下文切换带来的开销。 bthread类似协程&#xff0c;即用户态线程&#xff0c;bthread的切换不会陷入内核&#xff0c;不会进行一系列内存同步等耗时操作&#xff0c;因此bthread的切换在…

brpc搭建、编译和使用

前面介绍了brpc的理解&#xff0c;这里给出brpc官方的搭建过程&#xff0c;以及提供的测试用例&#xff0c;对brpc的使用有一个宏观的理解。 PS&#xff1a;这里必须再次称赞百度工程师门&#xff0c;brpc开源的文档非常的丰富&#xff0c;仅仅是看文档都受益匪浅&#xff0c;…

初探brpc

今天开始对百度的这块开源项目进行学习&#xff0c;之前一直有听说&#xff0c;但是没有去尝试使用&#xff0c;下面就自己对brpc的学习心得进行一个总结。 1、brpc的简介 brpc又称为baidu-rpc&#xff0c;是百度开发一款“远过程调用”网络框架。目前该项目已在github上开源…

高性能RPC框架BRPC核心机制分析

作者&#xff1a;tom-sun 链接&#xff1a;https://zhuanlan.zhihu.com/p/113427004 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 1. 简介 百度开源的RPC框架BRPC&#xff0c;以其高性能、低延迟、易用性等优势…

brpc internal

brpc 内部实现 thread model pthread 1:1atomic cache同步降低性能 fiber n:1 -> nginx 多核难以扩展, 用户不能做阻塞操作. context 存储contextualStack bthread_make_fcontext (boost::context)手动切换线程上下文->函数栈, 寄存器 bthread_jump_fcontext 将con…

brpc学习:bvar

一.介绍 bvar是多线程环境下的计数器类库&#xff0c;方便记录和查看用户程序中的各类数值&#xff0c;它利用了thread local存储减少了cache bouncing&#xff0c;相比UbMonitor(百度内的老计数器库)几乎不会给程序增加性能开销&#xff0c;也快于竞争频繁的原子操作。 brpc…

c++ http服务器之Apache工具ab压力测试(nginx与brpc)

系列服务器开发 文章目录 系列服务器开发前言一、ab是什么&#xff1f;二、ab测试实例nginx1.nginx环境准备与安装2.ab测试nginx本身的性能3.ab测试基于brpc的http服务器性能 三、ab实战之常见问题解决总结 前言 一、ab是什么&#xff1f; ab全称为&#xff1a;apache bench&a…

brpc源码学习(五)-IOBuf

目录 Block BlockRef IOBuf 主要api tls优化 IOPortal protobuf接口 首先放上官方介绍&#xff1a; brpc使用butil::IOBuf作为一些协议中的附件或http body的数据结构&#xff0c;它是一种非连续零拷贝缓冲&#xff0c;在其他项目中得到了验证并有出色的性能。IOBuf的接…

BRPC学习

一 源码地址&#xff1a;GitHub - apache/incubator-brpc: brpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc"…

brpc源码解析(四)—— Bthread机制

目录 一、概述二、启动入口函数三、内部启动函数四、worker工作入口五、总结 Bthread是brpc用到的一个线程库&#xff0c;也是brpc的核心之一&#xff0c;默认情况下&#xff0c;包括用户代码在内的绝大部分代码都是运行在bthread里的&#xff0c;bthread也是brpc实现高性能的基…

Springboot集成Brpc

本文代码可在总结处自取。 1、为什么要写这篇文章 最近自己做的业务在和C团队对接&#xff0c;双方需要指定接口与传输协议。原本是直接使用http协议传输json数据&#xff0c;对双方来说都比较简单可接受。但是json数据传输效率实在令人堪忧&#xff0c;导致我们不得不另寻其道…

brpc源码学习(六)- brpc server 端整体流程

brpc的使用比较容易上手&#xff0c;以官方demo为例&#xff0c;因为brpc的数据序列化依赖protobuf&#xff0c;所以首先需要定义个proto 然后继承EchoService并实现Echo方法 然后是整体流程 启动还是比较简单的&#xff0c;定义server&#xff0c;AddService&#xff0c;然后S…

brpc源码解析(一)—— rpc服务添加以及服务器启动主要过程

目录 1.往Server里添加Service&#xff08;业务代码&#xff09;2.设置服务器参数3.启动服务器 平时的工作用到了baidu-rpc搭建rpc服务&#xff0c;作为戈君大神的大作&#xff0c;在没有开源的时候&#xff0c;这个c 的rpc框架在厂内就已经好评颇多&#xff0c;无论是性能、文…

brpc初步学习

一.BRPC介绍 BRPC百度开源的一个rpc框架&#xff0c;它具有以下特性&#xff1a; 基于protobuf接口的RPC框架&#xff0c;也提供json等其他数据格式的支持囊括baidu内部所有RPC协议&#xff0c;支持多种第三方协议模块化设计&#xff0c;层次清晰&#xff0c;很容易添加自定义…

brpc介绍、编译与使用

brpc又称为baidu-rpc&#xff0c;是百度开发一款“远程过程调用”网络框架。目前该项目已在github上开源——https://github.com/brpc/brpc。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 据目前公开的资料&#xff0c;我们发现百度内部从2010年开始&#x…