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

有如下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事件之前。

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在 Element UI 中,可以通过自定义验证规则来验证表单输入的数据。面是一个示例代码,演示何自定义验证规则: ```javascript // 导入 Element UI 的验证规则方法 import { validate } from 'element-ui' // 自定义验证规则 const customRules = { // 自定义规则名称:验证函数 customRule1: (rule, value, callback) => { if (value === 'custom') { callback(new Error('自定义规则1验证失败')) } else { callback() } }, customRule2: (rule, value, callback) => { if (value.length < 5) { callback(new Error('自定义规则2验证失败')) } else { callback() } }, } // 在表单中使用自定义验证规则 <el-form :rules="customRules"> <el-form-item label="自定义规则1"> <el-input v-model="input1"></el-input> </el-form-item> <el-form-item label="自定义规则2"> <el-input v-model="input2"></el-input> </el-form-item> </el-form> ``` 在上面的代码中,我们首先导入了 Element UI 的验证规则方法 `validate`。然后定义了两个自定义验证规则 `customRule1` 和 `customRule2`,这两个规则分别对输入的值进行验证,并根据验证结果调用回调函数 `callback`。当验证失败时,使用 `new Error()` 创建一个错误对象,并传递给回调函数;当验证通过时,直接调用回调函数即可。 最后,在表单中使用自定义验证规则时,将自定义规则对象 `customRules` 通过 `:rules` 属性传递给 `el-form` 组件。在每个需要验证的表单项中,通过 `v-model` 绑定输入的值,然后在 `el-form-item` 组件中添加相应的标签和验证提示信息。 这样,当用户输入的值不符合自定义验证规则时,Element UI 会自动显示相应的错误提示信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值