elementUI表单验证怎么显示后台返回的错误信息

elementUI的表单验证使用非常方便,此处不赘述,网上的方法和官方文档都有描述。

如果后台返回的错误信息要显示在表单验证错误提示的地方,而不是另外弹出提示框或者,实现效果如下图:
这里写图片描述
这个效果要如何实现呢?网上搜索了一些别人的做法,例如:

vm.$refs.ruleForm.fields.filter((item) => (item.prop === i))[0];  

不知道是什么鬼怎么用的~~我用了没有达到想要的效果,如果哪些网友知道,望告知

还有一种做法是:

this.$refs.ruleForm.fields[0].error="错误提示"

这个是可以起作用的,但是控制窗口会有如下警告:

webpack-internal:///./node_modules/vue/dist/vue.esm.js:592 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "error"

found in

---> <ElFormItem>
       <ElForm>
         <ElDialog>
           <DeptManageTab> at src\modules\settings\userManage\DeptManageTab.vue
             <TabPane>
               <Tabs>
               ……
                   <AppContainer> at src\containers\AppContainer.vue
                     <App> at src\App.vue
                       <Root>

这里写图片描述
提示error属性的使用方法有误,避免直接更改一个属性的值,因为父组件重新加载时,该值会被覆盖,可以在data或者computed中定义一个变量来替代。

form-item里有个error的属性,刚用elementUI的童鞋可能很容易忽略
这里写图片描述
要实现在表单验证的地方显示后来返回的错误,加上error的属性,在data中定义一个错误信息的变量errorMsg,修改变量即可

<el-form :model="depForm" ref="depForm" :rules="depFormRules">
        <el-form-item label="部门名称" label-width="25%" prop="name" :error="errorMsg">
          <el-input v-model="depForm.name" auto-complete="off" clearable />
        </el-form-item>
      </el-form>
post(Url,params, function (result) {
        if (result.data.success) {
          //成功时操作 
        } else {
        // 后台返回的错误信息赋值给变量errorMsg 
          self.errorMsg = result.data.message
        }
      })

然后你会发现只有第一次出错时才有提示,后续一样的错误不会有验证失败的提示,在下猜测可能是errorMsg修改成一样的值,vue没触发响应

在请求前将错误信息置空即可

self.errorMsg = ''
post(Url,params, function (result) {
        if (result.data.success) {
          //成功时操作 
        } else {
        // 后台返回的错误信息赋值给变量errorMsg 
          self.errorMsg = result.data.message
        }
      })

So easy有木有!!!!说得不对的地方望批评指正,大家一起进步~

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
Element UI 提供了一套强大的表单验证机制,可以帮助开发者快速实现表单验证功能。下面是一个简单的示例,演示如何使用 Element UI 进行表单验证: 首先,确保你已经安装了 Element UI,并在项目中正确引入了相关的样式和组件。 然后,在你的 Vue 组件中,使用 `<el-form>` 和 `<el-form-item>` 组件包裹你的表单元素,并在需要进行验证的表单元素上添加 `prop` 属性指定该表单元素的唯一标识符。 接下来,通过添加规则对象,定义每个表单元素的验证规则。你可以通过 `rules` 属性传入一个对象,对象的键是表单元素的 `prop` 值,值是一个数组,数组中的每个对象表示一个验证规则。 最后,在提交表单时,可以通过调用 `<el-form>` 组件的 `validate` 方法来触发表单验证,如果验证通过,则执行相应的提交操作。 以下是一个示例代码: ```vue <template> <el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="form.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { username: '', password: '' }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 20, message: '用户名长度在 3 到 20 个字符', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 20, message: '密码长度在 6 到 20 个字符', trigger: 'blur' } ] } } }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 // ... } else { // 表单验证未通过 return false; } }); } } } </script> ``` 以上示例中,我们定义了一个包含用户名和密码的表单,为每个表单元素定义了相应的验证规则。在提交表单时,调用 `validate` 方法进行表单验证,如果验证通过,则可以执行提交操作。 这只是一个简单的示例,Element UI 还提供了更多的验证规则和自定义验证方法,可以根据具体需要进行配置。详细的文档可以参考 Element UI 官方文档中的表单验证部分。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值