1***@qq.com
1***@qq.com
  • 发布:2023-04-25 10:26
  • 更新:2023-04-25 16:59
  • 阅读:642

【报Bug】表单校验时机和官方描述不符

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.7.9

第三方开发者工具版本号: Stable 1.06.2301160

基础库版本号: 2.31.0

项目创建方式: HBuilderX

示例代码:
<template>  
  <view>  
    <uni-forms  ref="form" :modelValue="formData">  
            <uni-forms-item ref="input"  name="age" >  
            <!-- input 的校验时机 -->  
            <input v-model="formData.age"  @blur="(e)=>$refs.input.onFieldChange(e.detail.value)" />  
            </uni-forms-item>  
    <button class="button" @click="submit">校验表单</button>  
       </uni-forms>  
  </view>  
</template>  
<script>  
export default {  
    data() {  
        return {  
            formData:{  
age: null  
        },  
            rules: {  
                age: {  
                    rules: [{  
                        required: true,  
                        errorMessage: '必填',  
                    }]  
                }  
            }  
        }  
    },  
    methods: {}  
}  
</script>

操作步骤:

上面代码进行简单示例,先已将age初始为null,点击输入框后不输入操作,直接失焦,就会立即校验。

预期结果:

要与官方校验时机设置顺序相同

  • 如果规则里配置 validateTrigger ,则优先使用规则里的 validateTrigger 属性来决定表单校验时机
  • 如果规则里没有配置 validateTrigger ,则优先使用 uni-forms-item 的 validateTrigger 属性来决定表单校验时机
  • 如果 uni-forms-item 组件里没有配置 validateTrigger ,则优先使用 uni-forms 的 validateTrigger 属性来决定表单校验时机
  • 以此类推,如果都没有使用 validateTrigger 属性,则会使用 uni-forms 的 validateTrigger 属性默认值来决定表单校验时机

实际结果:

onFieldChange方法会立即校验(之前版本不会立即校验)

bug描述:

下面代码未配置validateTrigger,应该是默认在表单submit时进行校验,实际结果是立即校验,就算配置validate-trigger="submit",依然会立即校验,与官方所说的优先使用 uni-forms 的 validateTrigger 属性来决定表单校验时机不符

官方文档原文:

表单校验时机说明

uni-forms 1.4.0 后,只有 uni-forms上可以配置 validateTrigger,不在支持单独控制没个子表单的校验时机如果需要子表单需要单独的校验时机,可以使用 uni-forms-item 的 rules 属性和 onFieldChange 配合

  • 如果 uni-forms-item 组件里没有配置 validateTrigger ,则优先使用 uni-forms 的 validateTrigger 属性来决定表单校验时机
2023-04-25 10:26 负责人:无 分享
已邀请:
YUANRJ

YUANRJ

onFieldChange 方法会立即校验,如果不想立即校验的话,可以传递第二个参数为false, onFieldChange(value, false)

  • 1***@qq.com (作者)

    非常感谢,但文档里没有说明,这应该也算加分提交吧!!不过先给你送分感谢了!

    2023-04-25 20:06

  • YUANRJ

    回复 1***@qq.com: 后续我会补充到文档。

    2023-04-25 20:07

要回复问题请先登录注册