uni-app uni-forms组件校验无效

uni-app uni-forms组件校验无效

信息类别 信息内容
产品分类 uniapp/小程序/微信
PC开发环境 Mac
操作系统版本号 14.1.1
HBuilderX类型 正式
HBuilderX版本号 3.99
工具版本号 1.06
基础库版本号 3.3.1
项目创建方式 HBuilderX

操作步骤:

预期结果:

uni-forms正常使用

实际结果:

uni-forms在mac m1 arm架构下,真机测试出现校验失效的情况

bug描述

项目中所有uni-forms校验无效,输入有字符,但提示0字符校验提醒(required: true),导致无法正常使用。

其他

1、该bug在 mac studio [ m1 max ] (arm)环境下出现,经测试x86架构(iMac Intel i5)环境下,真机测试,uni-forms校验正常。

bug示例

1 回复

在使用 uni-appuni-forms 组件时,如果发现表单校验无效,可能是由于以下几个原因导致的。以下是一些常见的排查步骤和解决方案:

1. 确保 uni-formsuni-forms-item 正确使用

uni-forms 是表单容器,uni-forms-item 是表单项容器。确保每个表单项都包裹在 uni-forms-item 中,并且 uni-forms-itemname 属性与 uni-formsmodel 中的字段名一致。

<uni-forms ref="form" :model="formData" :rules="rules">
  <uni-forms-item label="用户名" name="username">
    <uni-easyinput v-model="formData.username" />
  </uni-forms-item>
  <uni-forms-item label="密码" name="password">
    <uni-easyinput type="password" v-model="formData.password" />
  </uni-forms-item>
</uni-forms>

2. 确保 rules 规则正确配置

rules 是校验规则对象,确保每个字段的校验规则正确配置。例如:

export default {
  data() {
    return {
      formData: {
        username: '',
        password: ''
      },
      rules: {
        username: {
          rules: [
            { required: true, errorMessage: '用户名不能为空' }
          ]
        },
        password: {
          rules: [
            { required: true, errorMessage: '密码不能为空' }
          ]
        }
      }
    }
  }
}

3. 确保 v-model 绑定正确

确保 uni-easyinput 或其他输入组件的 v-model 绑定到 formData 中的正确字段。

4. 确保 ref 属性正确设置

uni-forms 组件需要设置 ref 属性,以便在提交表单时调用校验方法。

<uni-forms ref="form" :model="formData" :rules="rules">
  <!-- 表单项 -->
</uni-forms>

5. 调用校验方法

在提交表单时,需要调用 uni-formsvalidate 方法进行校验。

methods: {
  submitForm() {
    this.$refs.form.validate().then(res => {
      console.log('校验通过', res)
    }).catch(err => {
      console.log('校验失败', err)
    })
  }
}

6. 确保 uni-forms 版本兼容

确保你使用的 uni-forms 组件版本与 uni-app 版本兼容。如果版本不兼容,可能会导致校验无效。

7. 检查是否有其他插件冲突

如果你在项目中使用了其他表单校验插件或库,可能会导致冲突。尝试暂时禁用其他插件,看看问题是否依然存在。

8. 查看控制台错误信息

打开浏览器的开发者工具,查看控制台是否有错误信息。错误信息可能会提供一些线索,帮助你找到问题所在。

9. 确保 uni-formsmodelrules 是响应式的

确保 formDatarules 是响应式的,即它们应该在 data 中定义,而不是在 methodscomputed 中。

10. 确保 uni-formsmodelrules 是对象

modelrules 应该是对象,而不是数组或其他类型。

data() {
  return {
    formData: {
      username: '',
      password: ''
    },
    rules: {
      username: {
        rules: [
          { required: true, errorMessage: '用户名不能为空' }
        ]
      },
      password: {
        rules: [
          { required: true, errorMessage: '密码不能为空' }
        ]
      }
    }
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!