Element: 对el-form-item中的普通 input 控件的自定义校验有问题

Created on 23 Jan 2017  ·  5Comments  ·  Source: ElemeFE/element

https://jsfiddle.net/gmve9d3p/122/

对于表单中的 a, b 两个字段,都加了自定义校验规则, a字段对应的是el-input,b字段对应的是普通的input

重现步骤:

  1. 改变A的内容,发现a的自定义规则触发
  2. 改变B的内容,发现b的自定义规则不会触发
  3. 点击submit按钮,发现a,b的自定义规则都会触发

预期:
b的自定义校验规则应该和a一样触发,而不是等到submit中完整校验的时候触发

Most helpful comment

提供一下正则验证的写法吧,大概就是这样:
文档上确实语焉不详,这个基础的用法也没有实例。
参照这里:https://github.com/yiminghe/async-validator/issues/20
不过上面这个文档写的也不详细。

rules : {
  name :[
    { required: true, message: '请填写笔名', trigger: 'blur' },
    { pattern:/^[\a-\z\A-\Z0-9\u4E00-\u9FA5]{2,20}$/, message: '2-20字汉字英文或数字,不包含特殊字符', trigger: 'blur' }
  ],
  phone : [
    { required: true, message: '请填写手机号', trigger: 'blur' },
    { pattern:/^1\d{10}$/, message : '请填写正确的手机号码', trigger: 'blur' }
  ],
  qq : [
    { required: true, message: '请填写常用QQ', trigger: 'blur' },
    { pattern:/^[1-9]\d{3,11}$/, message : '请填写正确QQ号码', trigger: 'blur' }
  ]
}

All 5 comments

普通的input无法做校验

@baiyaaaaa 这是为什么呢,另外,input不支持lazy,这个也比较麻烦

还有一个,这个校验组件多规则校验的时候不是遇到一条错误就停止,而是每一条执行一次。。。这逻辑似乎有问题

仅仅有 el-input 的类名,并不包含 el-input 的逻辑啊

@Leopoldthecoder 但是,这个校验组件不是校验一个JavaScript的object吗?

好像我似乎明白了,因为这个校验组件要靠捕获value更改来触发的是吗?这就是我之前想说的,如果把每一个form字段的验证结果都映射成一个computed属性,然后在computed里面执行校验规则,这样Vue可以帮我们处理触发时机的问题,同时可以解决验证规则中字段依赖的问题

提供一下正则验证的写法吧,大概就是这样:
文档上确实语焉不详,这个基础的用法也没有实例。
参照这里:https://github.com/yiminghe/async-validator/issues/20
不过上面这个文档写的也不详细。

rules : {
  name :[
    { required: true, message: '请填写笔名', trigger: 'blur' },
    { pattern:/^[\a-\z\A-\Z0-9\u4E00-\u9FA5]{2,20}$/, message: '2-20字汉字英文或数字,不包含特殊字符', trigger: 'blur' }
  ],
  phone : [
    { required: true, message: '请填写手机号', trigger: 'blur' },
    { pattern:/^1\d{10}$/, message : '请填写正确的手机号码', trigger: 'blur' }
  ],
  qq : [
    { required: true, message: '请填写常用QQ', trigger: 'blur' },
    { pattern:/^[1-9]\d{3,11}$/, message : '请填写正确QQ号码', trigger: 'blur' }
  ]
}
Was this page helpful?
0 / 5 - 0 ratings