VUE + Element-UI 表单校验input框数据已存在

基础校验方式实现

html代码

<el-form-item label="值名称:" style="width: 80%" prop="valueName" 
                :rules="[ 
                	{ required: true, message: '值名称不能为空'},
                	{ validator: checkValueNameIfExist, trigger: 'blur'},
                	{ pattern: \^[\u4E00-\u9FA5A-Za-z0-9_]+$\g, 
                	  message: '只允许输入中文、英文、下划线' }
                ]">
          <el-input v-model="formData.valueName" style="width: 90%"></el-input>
</el-form-item>

这里的:rules绑定的值也可以统一定义data.return里面。
2.js代码,methods中添加checkValueNameIfExist校验方法

 // 校验值名称是否存在
    async checkValueNameIfExist(rule, value, callback) {
        if(value) {
            let valueName = value
            let id = this.checkId
            let res = false
            // 发送请求,查询数据库当前表单内容是否已存在
            // 这里必须等待请求结束才能执行之后的代码
            // 否则 res 一直等于 false 即校验通过
            await checkRuleElemName({valueName, id}).then((data) => {
                res = data
            })
            if (res === true) {
                callback(new Error('值名称已存在'))
            } else {
                callback()
            }
            callback()
        }
        callback()
    },

注意: 代码中的checkValueNameIfExist 方法必须加关键字await !!!
3.查询sql:

select COUNT(ID) from table where VALUE_NAME = #{valueName} 
<if test="id != null and id != ''">
	id <![CDATA[<>]]> #{id}
</if>

sql解释:
前端新增和修改用的是同一个页面,所以需要考虑到修改的时候校验重复性。
前端实现步骤
data.return 中添加checkId: null
新增时this.checkId = ""把checkId设置成空或者null
修改时this.checkId = this.multipleSelection.xxId把获取到的表格中指定行数据的ID赋值给checkId

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值