vue3+ts校验表单不生效解决方法总结

    刚开始接触vue3+ts的时候会用操作很多的表单或者表格,表单设计的最多的就是校验了,我在刚接触vue3+ts来写校验的时候也遇到校验失效的问题,主要是控制台也没有报错,debugger发现根本没有走校验逻辑,接下来就要好好检查一下自己的代码了。

1.检查字段绑定是否有误,先检查有没有写ref属性,model绑定的正确性,是否绑定了rules规则,对应的规则名称是否与prop属性一致,如果都没有问题那就检查逻辑代码部分。

// 模板 检查 ref属性、model、rules、prop
<el-form ref="editFormRef" :model="editForm.form" :rules="eidtRules" label-width="120px" class="demo-ruleForm">
        <el-form-item label="" prop="processMode"></el-form-item>
</el-form>
const eidtRules = ({
      processMode: [{ required: true, message: '请输入', trigger: 'blur' }]
    })

2.检查方法是否根据ref获取到了数据,此处可以打印一下。

const editFormRef = ref<HTMLElement | null>(null)
const checkForm = () => {
      const formNode1 = editFormRef.value as any
      console.log('此处打印一下获取的数据', formNode1)
}

3.然后就是调用校验的方法,校验分为表单全部校验合部分字段校验。

值得注意的是我们在校验某个字段时,检验返回的结果要取反,全局校验校验结果不需要取反 。

4.当然完成以上几步还是校验无效的,因为少了关键的一步,我当时遇到这个问题就找了很久,其实就是一个细节问题。vue可以直接通过this.$refs获取,但是vue3不是,vue3要先在setup函数里定义一个响应式的ref数据,然后再返回给模板使用。

5.总结。

 前端职场小白,如果有说的不对的地方欢迎评论指正,其实最主要的还是要学会自己定位问题。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以尝试以下步骤来封装一个Vue 3和TypeScript下使用Element Plus的表单提交组件: 1. 安装必要的依赖: - Vue 3:`npm install vue@next` - TypeScript:`npm install -D typescript` - Element Plus:`npm install element-plus` 2. 创建一个新的Vue组件,并为其选择一个合适的名称,例如`FormSubmit.vue`。 3. 在`FormSubmit.vue`文件中,导入必要的模块和样式: ```vue <template> <!-- 表单内容 --> </template> <script lang="ts"> import { defineComponent } from 'vue'; import { ElButton, ElForm, ElFormItem } from 'element-plus'; export default defineComponent({ components: { ElButton, ElForm, ElFormItem, }, }); </script> <style scoped> /* Element Plus 样式 */ @import 'element-plus/packages/theme-chalk/src/index.scss'; /* 自定义样式 */ /* ... */ </style> ``` 4. 在模板中编写表单内容,并使用Element Plus的组件来构建表单: ```vue <template> <el-form ref="form" :model="formData" label-width="120px"> <el-form-item label="姓名" prop="name"> <el-input v-model="formData.name"></el-input> </el-form-item> <!-- 更多表单项 --> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script lang="ts"> // ... export default defineComponent({ // ... data() { return { formData: { name: '', // 更多表单字段 } }; }, methods: { submitForm() { // 表单提交逻辑 if (this.$refs.form.validate()) { // 表单验证通过,执行提交操作 // ... } } } }); </script> ``` 这样,你就可以使用封装好的表单提交组件来方便地处理表单提交了。你可以根据实际需求添加更多的表单项,并在`submitForm`方法中实现你的提交逻辑。希望这可以帮到你!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值