_Zora. 2024-09-07 17:34 采纳率: 85%
浏览 5

element-plus表单验证不通过

element-plus表单验证一直失败
问题如下:我使用element-plus的el-from组件来进行表单验证,
表单样式:

<el-form ref="form" style="width: 80%;"  :model="trademarkParams" :rules="rules" Ref="ruleFormRef">
      <el-form-item label="品牌名称" label-width="100px"   prop="tmName">
        <el-input  placeholder="请输入品牌的名称" v-model="trademarkParams.tmName" ></el-input>
      </el-form-item>

      <el-form-item label="品牌LOGO" label-width="100px" prop="logUrl">
         <el-upload
          class="avatar-uploader"
          action="/api/admin/product/fileUpload"
          :show-file-list="false"
          :on-success="handleAvatarSuccess"
          :before-upload="beforeAvatarUpload"
          >
          <img v-if="trademarkParams.logoUrl" :src="trademarkParams.logoUrl" class="avatar" />
          <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
      </el-upload>
  </el-form-item>
  </el-form>

表单验证

//获取from表单的组件实例
let ruleFormRef=ref()

// 添加品牌名的自定义表单校验
const tmNamePass = (_:any, value: any, callback: any) => {
  if (value) {
    callback()
  } else {
   callback(new Error('输入内容不能为空'))
  }
}
// 添加品牌照片的自定义表单校验
const logUrlPass = (_:any, value: any, callback: any) => {
  if (value) {
    callback()
  } else {
   callback(new Error('必须上传图片文件'))
  }
}

//表单校验
let rules={
  tmName:[{
    required: true,
    trigger: 'blur',
    validator: tmNamePass,
  }],
  logUrl:[{
    required: true,
    validator: logUrlPass,
  }]
}


点击确认按钮提交表单,这一段代码报错,注释了不进行表单验证就能执行后续代码,之前测试的时候没问题,后面再次测试就表单验证不通过了,想问一下大家哪里错了,十分感谢!
await ruleFormRef.value.validate()



  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-07 17:35
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的代码来看,你的Element Plus表单验证逻辑看起来是正确的。但是,有一些可能的问题可能会导致验证失败。以下是一些可能的原因和解决方案:

    1. 确保规则绑定正确:在你的<el-form>标签中,你要确保:rules="rules"正确地绑定了你的规则对象。你给出的代码中看起来是绑定正确的,但还是要确保在你的组件中rules对象已经被正确定义和初始化。
    2. 确保表单实例正确获取:你在代码中使用了let ruleFormRef=ref()来获取表单的实例,但在使用await ruleFormRef.value.validate()之前,需要确保ruleFormRef已经成功获取到了表单的实例。如果ruleFormRefundefinednull,则调用validate()方法会失败。确保在你的模板中使用ref="ruleFormRef"正确地设置了引用。
    3. 检查异步验证:你的验证函数tmNamePasslogUrlPass是异步的,它们通过回调函数返回错误。确保在调用这些函数时正确处理了异步操作,尤其是在进行表单验证时。
    4. 检查其他可能的错误来源:确认其他部分的代码(如提交处理函数)没有错误或阻止了验证过程。

    你可以尝试以下步骤来调试问题:

    • 在调用validate()方法之前,检查ruleFormRef.value是否存在并且是一个有效的表单实例。
    • 使用console调试检查是否有其他错误或警告。
    • 确保上传文件的逻辑(包括beforeAvatarUploadhandleAvatarSuccess)没有影响到表单验证。

    如果以上步骤仍然无法解决问题,你可以考虑简化代码到一个最基本的形式,逐步添加功能以找到问题的根源。希望这些建议能帮助你解决问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 9月7日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见