element 自定义form表单校验规则导致validate不执行

element 自定义form表单校验规则导致validate不执行

1.错误代码

下面的代码看起来似乎是没什么问题,控制台与编译器都没有报错,可是validate就是不执行。

data() {
    var checkSignatoryLength = (rule, value, callback) => {
      if (this.form.signatory !== undefined && this.form.signatory !== null) {
        if (this.form.signatory.length < 2) {
          return callback(new Error('需至少选择两个签字人'));
        } 
      }
    };
    return {
    	rules{
          signatory: [
            { required: true, message: '请选择签字人', trigger: 'change' },
            { required: true, validator: checkSignatoryLength, trigger: 'change' }
          ]
	}
    }
}
2.解决办法

校验代码添加else返回callback();

data() {
    var checkSignatoryLength = (rule, value, callback) => {
      if (this.form.signatory !== undefined && this.form.signatory !== null) {
        if (this.form.signatory.length < 2) {
          return callback(new Error('需至少选择两个签字人'));
        } else {
          callback();
        }
      }
    };
    return {
    	rules{
          signatory: [
            { required: true, message: '请选择签字人', trigger: 'change' },
            { required: true, validator: checkSignatoryLength, trigger: 'change' }
          ]
	}
    }
}
3.原因

自定义校验规则无论校验是否通过都一定要返回callback()

在使用 HTML 的 `<form>` 元素进行表单校验时,可以使用以下方法来校验数字规则: 1. 使用 `type=""` 属性:在 `<input>` 标签添加 `type="number"` 属性可以确保用户只能输入数字。浏览器会自动校验输入并阻止非数字字符的输入。 ```html <input type="number" name="quantity" required> ``` 上述示例中,`name="quantity"` 是表单字段的名称,`required` 属性表示该字段为必填项。 2. 使用 `pattern` 属性:可以通过正则表达式来定义数字的校验规则。以下示例将只允许用户输入 0 或正整数: ```html <input type="text" name="quantity" pattern="[0-9]+" required> ``` 上述示例中,`pattern="[0-9]+"` 表示只允许数字字符,并且至少要有一个数字字符。 3. 使用 JavaScript 进行自定义校验:通过 JavaScript,你可以对用户输入的值进行更复杂的校验规则,并给出相应的错误提示。以下是一个简单的示例: ```html <form onsubmit="return validateForm()"> <input type="text" id="quantity" name="quantity" required> <input type="submit" value="Submit"> </form> <script> function validateForm() { var quantity = document.getElementById("quantity").value; if (!(/^\d+$/.test(quantity))) { alert("请输入有效的数字!"); return false; } // 继续其他校验逻辑... } </script> ``` 上述示例中,`validateForm()` 函数会在表单提交时被调用。它使用正则表达式 `/^\d+$/` 来校验用户输入是否为一个或多个数字字符。 以上是几种常见的校验数字规则的方法,你可以根据具体需求选择适合的方法进行表单校验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值