uni-app 表单校验最大最小值无效
uni-app 表单校验最大最小值无效
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win11
HBuilderX类型:正式
HBuilderX版本号:4.36
手机系统:Android
手机系统版本号:Android 14
手机厂商:一加
手机机型:一加3V Pro
页面类型:vue
vue版本:vue2
打包方式:云端
示例代码:
<template>
<uni-forms ref="form1" :modelValue="formData1" label-position="top" rules="rules1" label-width="650rpx" >
<uni-forms-item :label="$t('过压保护值(单位:mV)')" name="value1">
<uni-easyinput type="number" v-model="formData1.value1" placeholder="请输入过压保护值" />
</uni-forms-item>
<uni-forms-item :label="$t('过压保护恢复值(单位:mV)')" name="value2">
<uni-easyinput type="number" v-model="formData1.value2" placeholder="请输入过压保护恢复值" />
</uni-forms-item>
<uni-forms-item :label="$t('过压保护延时(单位:秒)')" name="value3">
<uni-easyinput type="number" v-model="formData1.value3" placeholder="请输入过压保护延时" />
</uni-forms-item>
<uni-forms-item :label="$t('欠压保护值(单位:mV)')" name="value4">
<uni-easyinput type="number" v-model="formData1.value4" placeholder="请输入欠压保护值" />
</uni-forms-item>
<uni-forms-item :label="$t('欠压保护恢复值(单位:mV)')" name="value5">
<uni-easyinput type="number" v-model="formData1.value5" placeholder="请输入欠压保护恢复值" />
</uni-forms-item>
<uni-forms-item :label="$t('欠压保护延时(单位:秒)')" name="value6">
<uni-easyinput type="number" v-model="formData1.value6" placeholder="请输入欠压保护延时" />
</uni-forms-item>
</uni-forms>
</template>
<script setup>
let formData1 = reactive({
value1: "3500",
value2: "3500",
value3: 8,
value4: 2000,
value5: 2100,
value6: 8,
})
let rules1 = {
value1: {
rules:[
{required: true, errorMessage: '请输入过压保护值',},
{minimum: 3500, maximum:4300, errorMessage: '请输入3500~4300之间的值'},
],
},
value2: {
rules:[{required: true, errorMessage: '请输入过压保护恢复值',},{minimum: 3500, maximum:4300, errorMessage: '请输入3500~4300之间的值'}],
},
value3: {
rules:[{required: true, errorMessage: '请输入过压保护延时',},{minimum: 1, maximum:10, errorMessage: '请输入1~10之间的值'}],
},
value4: {
rules:[{required: true, errorMessage: '请输入欠压保护值',},{minimum: 2000, maximum:3000, errorMessage: '请输入2000~3000之间的值'}],
},
value5: {
rules:[{required: true, errorMessage: '请输入欠压保护恢复值',},{minimum: 2000, maximum:3000, errorMessage: '请输入2000~3000之间的值'}],
},
value6: {
rules:[{required: true, errorMessage: '请输入欠压保护延时',},{minimum: 1, maximum:10, errorMessage: '请输入1~10之间的值'}],
}
}
</script>
操作步骤:
1
预期结果:
校验string类型或者输入框输出number类型
实际结果:
校验number类型或者输入框输出string类型
bug描述:
输入框的type=“number”,但是输出的是string,校验规则又只能校验number类型,导致校验不生效
1 回复
在uni-app中,表单校验通常依赖于rules
属性来定义校验规则。如果你发现最大最小值校验无效,可能是由于几个常见原因:输入值的类型不匹配、校验规则配置错误,或者代码实现有误。下面是一个基本的代码示例,展示如何在uni-app中实现表单字段的最大最小值校验。
首先,确保你的uni-app项目已经安装并配置好,然后你可以按照以下步骤设置表单校验。
1. 定义表单数据和校验规则
在你的页面的data
函数中定义表单数据和校验规则:
data() {
return {
form: {
age: null, // 假设我们要校验年龄字段
},
rules: {
age: [
{ required: true, message: '请输入年龄', trigger: 'blur' },
{ type: 'number', message: '年龄必须是数字', trigger: ['blur', 'change'] },
{ min: 18, max: 60, message: '年龄必须在18到60之间', trigger: ['blur', 'change'] }
]
}
};
}
2. 绑定表单和校验规则到视图
在页面的模板部分,使用u-form
和u-form-item
组件来绑定表单数据和校验规则:
<template>
<view>
<u-form :model="form" :rules="rules" ref="formRef">
<u-form-item label="年龄" prop="age">
<u-input v-model="form.age" placeholder="请输入年龄"></u-input>
</u-form-item>
<u-button type="primary" @click="submitForm">提交</u-button>
</u-form>
</view>
</template>
3. 实现提交表单的逻辑
在页面的方法中实现表单提交逻辑,并处理校验结果:
methods: {
submitForm() {
this.$refs.formRef.validate((valid) => {
if (valid) {
uni.showToast({
title: '提交成功',
icon: 'success'
});
} else {
console.log('表单校验失败');
return false;
}
});
}
}
注意点
- 确保输入的值是数字类型,因为
min
和max
校验是基于数字的比较。 trigger
属性定义了何时触发校验,通常设置为blur
或change
。- 如果校验仍然无效,检查是否有其他地方(如计算属性或方法)修改了表单数据,这可能会影响校验逻辑。
通过上述步骤,你应该能够在uni-app中实现有效的最大最小值表单校验。如果问题依旧存在,建议检查控制台是否有错误信息,或者检查是否有其他代码干扰了校验过程。