当前位置: 首页 > article >正文

表单验证不生效

vue

element-ui

需要注意
:model
:rules
ref

<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>
<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

<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>
<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>
<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>

http://www.kler.cn/a/461092.html

相关文章:

  • 高频java面试题
  • ==和===的区别,被坑的一天
  • 试题转excel;word转excel;大风车excel(1.1更新)
  • Spring Boot 中的 classpath详解
  • vue2+echarts实现水球+外层动效
  • 黑马Java面试教程_P10_设计模式
  • 前端Monorepo实践分享
  • GXUOJ-算法-第四次作业(圆排列、连续邮资、n皇后、符号三角形)
  • 「下载」智慧文旅运营综合平台解决方案:整体架构,核心功能设计
  • Rabbitmq追问2
  • UniApp 组件的深度运用
  • 【时时三省】(C语言基础)动态内存函数calloc
  • 活动安排.
  • nginx-nginx的缓存集成
  • Tube Qualify弯管测量系统在汽车管路三维检测中的应用
  • 08.VSCODE:内嵌MSYS2及三方库UTF8-CPP的实战
  • Spring 框架——@Async 注解
  • 可以突破合同相对性原则,不包括借用资质及多层转包和违法分包关系中的实际施工人
  • 【华为OD-E卷-统计匹配的二元组个数 100分(python、java、c++、js、c)】
  • 大语言模型遇上寻路算法:LLM-A*如何让路径规划效率提升50%?
  • 高效管理 Nginx 的利器:nginxWebUI 指南和 Docker 部署安装过程
  • 又一年。。。。。。
  • QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE (二)
  • 基于Spring Boot + Vue3实现的在线汽车保养维修预约管理系统源码+文档
  • MySQL 并行复制:提升数据同步速度的秘密武器
  • Maven (day04)