表单验证不生效

vue

element-ui

需要注意

:model

:rules

ref

html 复制代码
<el-form :model="myFormData" status-icon :rules="rules" ref="myFormData" label-width="100px" class="demo-ruleForm">

  <el-form-item label="姓名" prop="name">
    <el-input type="text" v-model="myFormData.name"></el-input>
  </el-form-item>
  
  <el-form-item label="年龄" prop="age">
    <el-input type="text" v-model="myFormData.age"></el-input>
  </el-form-item>
  
  <el-form-item>
    <el-button type="primary" @click="submitForm()">提交</el-button>
  </el-form-item>
  
</el-form>
js 复制代码
<script>
  export default {
    data() {
      return {
        myFormData: {
          name: '',
          age: ''
        },
        rules: {
        	name:[
        		{ 
        			required: true, 
        			message: '请输入姓名', 
        			trigger:['blur','change']
        		}
        	],
        	age:[
        		{ 
        			required: true, 
        			message: '请输入年龄', 
        			trigger:['blur','change']
        		}
        	],
        }
      };
    },
    methods: {
      submitForm() {
      	this.$refs['myFormData'].validate((valid) => {
			if (valid) {
				// 执行表单验证成功该执行的代码
			} else {
				// 执行表单验证失败应该执行的代码
			}
		});
        
      },
    }
  }
</script>

uniapp

uni-forms

需要注意

:modelValue

:rules

ref

html 复制代码
<template>
	<view>
		<div class="all">
			<view class="homework">
			
				<uni-forms :modelValue="myFormData" :rules="rules" ref="myFormData">
				
					<uni-forms-item label="姓名:" name="realName" :required="true">
						<uni-easyinput type='text' v-model="myFormData.realName" placeholder="请输入姓名" />
					</uni-forms-item>
					
					<uni-forms-item label="身份证号码" prop="" name="idNumber" :required="true">
						<uni-easyinput v-model="myFormData.idNumber" placeholder="请输入身份证号码" />
					</uni-forms-item>
					
				</uni-forms>
				
			</view>
	
			<div class="openDevice">
				<view class="btn" @click="submit">
					提交
				</view>
			</div>
		</div>
	</view>
</template>
js 复制代码
<script>
	export default {
		data() {
			return {
				myFormData: {
	                realName:'',
	                idNumber:''
	            },
				rules: {
					realName: {
						rules: [{
							required: true,
							errorMessage: '请输入姓名',
						},
						// {
						// 	minLength: 3,
						// 	maxLength: 5,
						// 	errorMessage: '姓名长度在 {minLength} 到 {maxLength} 个字符',
						// }
					]},
					idNumber: {
						rules: [{
							required: true,
							errorMessage: '请输入身份证号码',
						},
					]},
				},
			}
		},
		onLoad(options) {},
	    onShow() {},
		mounted() {},
		methods: {
			submit() {
				this.$refs['myFormData'].validate((valid) => {
					console.log(valid);
				    if (!valid) {
						// 验证通过
				        console.log('验证通过')
				        this.$emit('tabComponent', this.info);
				        ElMessage.success("注册成功!")
				 
				    } else {
						// 验证不通过
						console.log('验证不通过')
					}
				})
	            
	            console.log(this.myFormData)
			},
		}
	}
</script>
css 复制代码
<style scoped lang="scss">
	.all {
		width: 100vw;
		background-color: #fff;
		// padding: 30rpx;
		box-sizing: border-box !important;

		.news {
			width: 100vw;
			height: 513rpx;
			background: url('../../../static/scan/homeworkBg.png') no-repeat;
			background-size: 100% 100%;
			background-attachment: cover;
			background-color: #37a7f1;
			display: flex;
			flex-direction: column;
			justify-content: space-evenly;
			padding-left: 80rpx;
			color: #fff;
			box-sizing: border-box;
		}

		.homework {
			padding: 70rpx;
			box-sizing: border-box;

			overflow: hidden;

		}

		.box {
			position: relative;
			top: -30px;
			z-index: 999;
			background: #fff;
			width: 100%;
			border-radius: 40rpx 40rpx 0rpx 0rpx;
		}

		::v-deep .uni-forms-item__label {
			width: 120px !important;
			color: #333333;
			font-weight: 500;
			font-size: 30rpx;
		}

		::v-deep .uni-forms-item {
			border-bottom: 1px solid #f4f3f3;
		}

		::v-deep .uni-select {
			border: none !important;
		}

		::v-deep .is-input-border {
			border: none !important;
		}
        .list-cell{
            display: flex;
        }
        .uni-list-cell{
            margin-right: 10rpx;
        }
		.btn {
			width: 80%;
			height: 100rpx;
			line-height: 100rpx;
			text-align: center;
			background: #3F9DFD;
			border-radius: 50rpx;
			font-weight: 400;
			font-size: 32rpx;
			color: #FFFFFF;
		}

		.openDevice {
			width: 100%;
			display: flex;
			justify-content: center;
		}

		.text {
			width: 427rpx;
			height: 160rpx;
			font-family: Noto Sans S Chinese;
			font-weight: normal;
			font-size: 28rpx;
			color: #333333;
		}
	}
</style>
相关推荐
GDAL20 分钟前
better-sqlite3之exec方法
javascript·sqlite
匹马夕阳1 小时前
基于Canvas和和原生JS实现俄罗斯方块小游戏
javascript·canva可画
m0_616188491 小时前
Vue3 中 Computed 用法
前端·javascript·vue.js
六个点1 小时前
图片懒加载与预加载的实现
前端·javascript·面试
weixin_460783871 小时前
Flutter解决TabBar顶部页面切换导致页面重载问题
android·javascript·flutter
Patrick_Wilson1 小时前
🔥【全网首篇】30分钟带你从0到1搭建基于Lynx的跨端开发环境
前端·react.js·前端框架
逍遥客.1 小时前
uniapp对接打印机和电子秤
javascript·vue.js·uni-app
小沙盒1 小时前
godot在_process()函数实现非阻塞延时触发逻辑
javascript·游戏引擎·godot
Moment2 小时前
前端 社招 面筋分享:前端两年都问些啥 ❓️❓️❓️
前端·javascript·面试
Moment2 小时前
一坤时学习 TS 中的装饰器,让你写 NestJS 不再手软 😏😏😏
前端·javascript·面试