开发uniapp 使用框架uview 表单回显校验输入框有值但校验未通过的问题

1,731 阅读1分钟

一直被这个问题坑好几次了 真是气死,找了好久的原因  (主要原因还是数据更新了视图未更新,校验数据未更新导致)

后来写了个demo试了一下,

详情页面-数据回显-- 有数据--提交时有校验,但未通过,

解决方法:

demo代码:

重点代码--:key='keydata',在需要变化的地方 改变keydata 值,(强制刷新无效但这个有效,nice)

<!-- 临床信息 -->
<template>
	<view>
		<u--form class="formData" labelWidth='auto'
		labelPosition="top" :model="formData" :rules="rules" ref="formData"
		:key='keydata'>
			<u-row>
				<u-col span="3">
					<u-form-item label="年龄(岁)" prop="nl" :required="true">
						<u--input 
						v-model="formData.nl" 
						type="number" placeholder='' min="0" max="100"
							oninput="value=value.replace(/[^0\d]/g, '')" 
							></u--input>
					</u-form-item>
				</u-col>
			</u-row>
			<u-row justify="center" gutter="20">
				<u-col span='2'>
					<view>
						<u-button type="primary" 
						@click="addSave('formData')" text="保存">
						</u-button>
					</view>
				</u-col>
			</u-row>
		</u--form>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				formData:{
					nl:''
				},
				rules:{
					nl: {
						required: true,
						message: '请输入年龄',
						trigger: ['blur','change']
					},
				},
				keydata:'1'
			}
		},
		mounted(){
			this.keydata++;
			let obj={
				nl:32
			};
			this.formData=obj;
		},
		methods: {
			// 页面保存提交
			addSave(formName){
				this.keydata++;
				console.log('保存数据:',this.formData);
				this.$refs.formData.validate().then(async res => {
					console.log('验证通过');
				}).catch(errors => {
					console.error('请仔细检查表单:',errors);
					uni.$u.toast('请仔细检查表单')
				})
			},
		}
	}
</script>

<style>

</style>