【Vue+ElementUI】表单校验(一)——唯一性校验

由于项目需要,开始用Vue.js+ElementUI来开发前端页面,今天的问题是,如果在Form表单校验中使用自定义方法?如果做后台校验(需要校验数据唯一性)?

最简单的Form表单校验:

//form.vue
//...
<el-form :model="form" :rules="rules" ref="form">
  <el-form-item label="编码" prop="code">
    <el-input v-model="form.code"></el-input>
  </el-form-item>
</el-form>

//js
<script>
export default {
  data () {
    return{
      form:{
        code: ''
      },
      rules:{
        code: [{ type: 'string', required: true, message: '请您完善此项', trigger: 'blur' }] // 必填校验
      }
  }
}
</script>

这就完成一个最简单的校验,但是需求不是这么简单。

要做唯一性校验,那就要访问数据库了,那么就要考虑写一个自定义的方法了,于是,找到了validator:

rules:{
  code:[
    // function(rule, value, callback, source, options)
    {validator:function(rule, value, callback){...}, trigger: 'blur'}
  ]

实现代码:

<script>
// ...
export default {
  data () {
    let validate = (rule, value, callback) => {
      //后台方法
      validateCode(value).then(res => {
        if (res && res.data === 'TRUE') {
          callback()
        } else if (res && res.data === 'FALSE') {
          callback('编码已存在')
        }
      })
    }
    return{
      form:{
        code: ''
      },
      rules:{
        code: [
          { type: 'string', required: true, message: '请您完善此项', trigger: 'blur' }, // 必填校验
          {validator:validate, trigger: 'blur'}
        ],  
      }
  }
}
</script>

参考:https://www.npmjs.com/package/async-validator

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容