小程序开发定制element 表单使用校验 校验失效问题

首先是html必须正确,小程序开发定制直接看代码示例:

  1. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  2. <el-form-item label="名称" prop="name">
  3. <el-input v-model="form.name"></el-input>
  4. </el-form-item>
  5. <el-form-item label="性别" prop="sex">
  6. <el-input v-model="form.sex"></el-input>
  7. </el-form-item>
  8. <el-form-item label="年龄" prop="age">
  9. <el-input v-model="form.age"></el-input>
  10. </el-form-item>
  11. </el-form>

小程序开发定制第一种可能的错误: 字段错误

小程序开发定制其中的每个 标签中,都有一个 prop ,小程序开发定制其中的值是我们 rules 对象中的 某个 属性。

然后我们 v-model 绑定的值也必须是 这个 属性

比如我们的字段是 userName,我们的prop还是name时,校验失效

  1. <el-form-item label="名称" prop="name">
  2. <el-input v-model="form.userName"></el-input>
  3. </el-form-item>

再来看js中的代码:

  1. form: {
  2. name: undefined,
  3. sex: undefined,
  4. age: undefined
  5. },
  6. rules: {
  7. name: [
  8. { required: true, message: "用户名称不能为空", trigger: "blur" },
  9. { min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' }
  10. ],
  11. sex: [
  12. { required: true, message: "性别不能为空", trigger: "blur" }
  13. ],
  14. age: [
  15. { required: true, message: "年龄不能为空", trigger: "blur" },
  16. { pattern: /^([0-9]|[1-9]\d|[1-9]\d\d)$/, message: '年龄介于 0-999 之间', trigger: 'blur' }
  17. ]
  18. }

第二种:触发校验错误

rules 中 每个校验对象 都有一项 trigger 是检验触发的方式

对 el-input 输入框的验证,trigger的值选blur,即失去焦点时进行验证。

下拉框 el-select、日期选择器 el-date-picker、复选框 el-checkbox、单选框 el-radio验证时,trigger的值选择change,即当值发生变化时就进行验证。

没有任何输入的时候,不会触发 change , 但一定会触发 blur 事件

:如果使用了其他的组件(非ele组件等),组件中没有 v-model 等等情况时,值改变时需要我们手动去触发校验

方法名说明参数
validateField对部分表单字段进行校验的方法Function(props: array | string, callback: Function(errorMessage: string))
this.$refs.表单ref名称.validateField(校验字段);

validator

最后提一下自定义校验,用于一些校验一些复杂的值

validator的参数有:(rule, value, callback),前三个比较重要

  • rule:指向该条规则对象。

  • value:新的值,用于参与运算、对比。

  • callback:执行回调,使用方法是:callback('...');

    • 如果不传参:表示验证通过,一般不必专门强调。

    • 如果传入值:字符串会作为错误提示,但是显示优先级低于外层的message。比如callback('内层错误提示');message: '外层错误提示'同时存在,则会提示:外层错误提示

直接看代码

  1. data(){
  2. const name = (rule, value, callback) => {
  3. console.log(rule)
  4. console.log(value)
  5. console.log(callback)
  6. if (this.oldName === value) {
  7. callback(new Error("新名字不能和旧名字一致"));
  8. } else {
  9. callback();
  10. }
  11. };
  12. return {
  13. rules: {
  14. name: [
  15. { required: true, trigger: "blur", message: "请再次输入新名字" },
  16. { required: true, validator: name, trigger: "blur" }
  17. ]
  18. }
  19. }

 更多的参数和核心代码 可以查看 ele 实现校验使用的 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发