validateRules: { certno: [ { required: true, message: '证件号码不能为空' }, { validator: (rule, value, callback) => { const result = verify(value) if (result.status === 0) { callback() } else { callback(new Error(result.msg)) } }, message: '请输入正确的身份证号码' } ], name: [ { required: true, message: '姓名不可为空' } ], empName: [ { required: true, message: '单位名称不可为空' } ], empCode: [ { required: true, message: '统一信用代码不能为空' } ], reason: [ { required: true, message: '失信原因不能为空' } ] }
时间: 2024-02-10 08:20:11 浏览: 123
根据你提供的代码,这是一个表单验证的规则对象 validateRules,其中 certno 字段是身份证号码的验证规则。这个规则要求该字段必填且必须是一个有效的身份证号码,否则会提示“请输入正确的身份证号码”。
其中,身份证号码的验证规则使用了一个 verify 函数,我猜测这个函数可能是用来校验身份证号码是否正确的。如果身份证号码不正确,该函数会返回一个 status 不为 0 的结果,包含错误信息 msg,否则返回 status 为 0。
总之,如果你输入的身份证号码不符合身份证号码的规则,就会触发该验证规则,并且提示“请输入正确的身份证号码”。如果你有其他的问题或疑问,请继续提问。
相关问题
validateRules: { certno: [ { required: true, message: '证件号码不能为空' } ], name: [ { required: true, message: '姓名不可为空' } ], empName: [ { required: true, message: '单位名称不可为空' } ], empCode: [ { required: true, message: '统一信用代码不能为空' } ], reason: [ { required: true, message: '失信原因不能为空' } ] } 中如何加入证件号码校验规则?
在`validateRules`中加入证件号码校验规则,可以在`certno`数组中新增一个对象,如下所示:
```javascript
validateRules: {
certno: [
{
required: true,
message: '证件号码不能为空'
},
{
validator: (rule, value, callback) => {
const reg = /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
if (!reg.test(value)) {
callback(new Error('请输入正确的身份证号码'))
} else {
callback()
}
},
message: '请输入正确的身份证号码'
}
],
name: [
{
required: true,
message: '姓名不可为空'
}
],
empName: [
{
required: true,
message: '单位名称不可为空'
}
],
empCode: [
{
required: true,
message: '统一信用代码不能为空'
}
],
reason: [
{
required: true,
message: '失信原因不能为空'
}
]
}
```
在上面的代码中,我们在`certno`数组中新增了一个对象,其中`validator`属性是一个函数,用于自定义校验规则。在该函数中,我们使用正则表达式验证传入的证件号码是否符合规则,如果不符合规则,通过`callback`函数返回一个`Error`对象,提示用户输入正确的身份证号码。如果输入的身份证号码符合规则,则直接调用`callback`函数即可。最后,将这个新对象的`message`属性设置为相应的提示信息即可。
<el-form-item label="目录ID" prop="directoryId"> <el-input v-model="form.directoryId" placeholder="请输入目录ID" > </el-input> </el-form-item> export default { rules: { directoryId: [ {required: true, message: "目录id不能为空", trigger: "blur"}, { validator: this.checkDirectoryId, trigger: 'blur' }// 在失去焦点时进行校验 ], directoryName: [ {required: true, message: "目录名称不能为空", trigger: "blur"}, ], //排序不能为空 sort: [ {required: true, message: "排序不能为空", trigger: "blur"}, ], } methods:{ checkDirectoryId(rule, value, callback) { const existingDirectoryIds = []; for (let i = 0; i < this.tableData.length; i++) { existingDirectoryIds.push(this.tableData[i].directoryId); } console.log(existingDirectoryIds) if (existingDirectoryIds.includes(value)) { callback(new Error('该目录ID已存在')); } else { callback(); } } }这段代码为什么在目录id的输入框输入已有的数值,未进行正确的校验呢?
在这段代码中,校验函数`checkDirectoryId`是在失去焦点时触发的,而输入框的校验是在输入时触发的。所以即使输入已有的数值,校验函数并没有被触发,导致没有进行正确的校验。
要解决这个问题,你可以改变校验的触发时机,将校验规则放在输入框的`change`事件中,这样在每次输入数值时都会触发校验函数。你可以将`trigger`属性设置为`change`,修改代码如下:
```javascript
rules: {
directoryId: [
{ required: true, message: "目录id不能为空", trigger: "blur" },
{ validator: this.checkDirectoryId, trigger: "change" } // 在输入时进行校验
],
// 其他规则...
},
```
这样修改后,在输入已有的数值时,校验函数会被正确触发,从而进行正确的校验。
阅读全文