vue form表单验证

第一种:非必填不能为空,并且需要正则验证

第二种:必填,正则验证,不能只输入空格验证

第三种:必填,正则验证,不能输入空格(v-model.trim)

第四种:选了多选框后必填

第一种:非必填不能为空,并且需要正则验证

javascript 复制代码
<template>
	<div>
		<el-form
		      class="abow_dialog"
		      :model="ruleForm"
		       ref="ruleForm"
		      :rules="rules"
		      label-width="180px"
		    >
		      <el-form-item label="电话(座机):" prop="tel">
		        <el-input v-model="ruleForm.tel"></el-input>
		      </el-form-item>
		</el-form>
	</div>
</template>
<script>
export default {
  data(){
  	// 电话(座机)
    var validateworkTel=(rule, value, callback) =>{
        let regexp = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,8}$/;
        if(value != null){
          let valdata = value.split(',');
          let isCorrect = true;
            if (valdata.length) {
              for (let i = 0; i < valdata.length; i++) {
                if (regexp.test(valdata[i]) == false) {
                    isCorrect = false;
                }
              }
            }				      
            if (value == '') {
              callback();
            }else if (!isCorrect) {
              callback(new Error('请输入正确的固定电话'));
            } else {
              callback()
            }
        }
        callback();
    }
  	return {
  		ruleForm: {
		  tel:"",
		},
		// 验证
        rules: {
			workTel:[
       			{ required: false, validator: validateworkTel, trigger: 'blur'},
        	]
		},
  	}
  }
}
</script>

第二种:必填,正则验证,不能只输入空格验证

javascript 复制代码
<template>
	<div>
		<el-form
		      class="abow_dialog"
		      :model="ruleForm"
		       ref="ruleForm"
		      :rules="rules"
		      label-width="180px"
		    >
		      <el-form-item label="电话(座机):" prop="mobile">
		        <el-input v-model="ruleForm.mobile"></el-input>
		      </el-form-item>
		</el-form>
	</div>
</template>
<script>
	export default {
	  data(){
	  	// 手机号
	    var validateMobile=(rule, value, callback) =>{
	        let regexp = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
					let valdata = value.split(',');
					let isCorrect = true;
						if (valdata.length) {
							for (let i = 0; i < valdata.length; i++) {
							   if (regexp.test(valdata[i]) == false) {
							       isCorrect = false;
							   }
							}
						}				      
						if (value == '') {
							return callback(new Error('请输入手机号'));
						} else if (!isCorrect) {
							callback(new Error('请输入正确的手机号'));
						} else {
							callback()
						}
	        callback();
	    }
	  	return {
	  		ruleForm: {
			  mobile:"",
			},
			// 验证
        	rules: {
				mobile:[
          			{ required: true, validator: validateMobile, trigger: 'blur' },
          			{ pattern: /\s*\S+?/, message: '请输入正确的手机号', trigger: 'blur' }
        ],
			},
		}
	  }
	}
</script>

第三种:必填,正则验证,不能输入空格(v-model.trim)

javascript 复制代码
<template>
	<div>
		<el-form
		      class="abow_dialog"
		      :model="ruleForm"
		       ref="ruleForm"
		      :rules="rules"
		      label-width="180px"
		    >
		    <el-form-item label="IP地址:" prop="contactIp">
        		<el-input v-model.trim="ruleForm.contactIp"></el-input>
      		</el-form-item>
		</el-form>
	</div>
</template>
<script>
	export default {
	  data(){
	  var validateContactIp=(rule, value, callback) =>{
        let regexp = /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/;
				let valdata = value.split(',');
				let isCorrect = true;
					if (valdata.length) {
						for (let i = 0; i < valdata.length; i++) {
						   if (regexp.test(valdata[i]) == false) {
						       isCorrect = false;
						   }
						}
					}				      
					if (value == '') {
						return callback(new Error('请输入IP地址'));
					} else if (!isCorrect) {
						callback(new Error('请输入正确的IP地址'));
					} else {
						callback()
					}
        callback();
    }
	  	return {
	  		ruleForm: {
			  contactIp:"",
			},
			// 验证
        	rules: {
				contactIp:[
	          		{ required: true, validator: validateContactIp, trigger: 'blur' },
	        	],
	        }
		}
	  }
	}
</script>

第四种:选了多选框后必填,

javascript 复制代码
<template>
	<div>
		<el-form
		      class="abow_dialog"
		      :model="ruleForm"
		       ref="ruleForm"
		      :rules="rules"
		      label-width="180px"
		    >
		    <el-form-item label="基本配置:" prop="isTopChecked" class="clearfix">
          <el-checkbox-group v-model="ruleForm.reminderChecked" class="fl" style="width:150px">
            <el-checkbox label="站内提醒" name="reminderChecked"></el-checkbox>
          </el-checkbox-group>
          <el-checkbox-group v-model="ruleForm.isTopChecked" class="fl" style="width:150px">
            <el-checkbox label="是否置顶" name="isTopChecked" @change="isTopCheckedChange"></el-checkbox>
          </el-checkbox-group>
          <el-date-picker
            v-if="isTopDataShow"
            v-model="ruleForm.isTopDatavalue"
            type="date"
            time-arrow-control
            format="yyyy-MM-dd"
            value-format="yyyy-MM-dd HH:mm:ss"
            range-separator="至"
            placeholder="置顶日期"
            style="width: 20%;"
            class="fl"
          >
          </el-date-picker>
        </el-form-item>
		</el-form>
	</div>
</template>
<script>
	export default {
	  data(){
	  var isTopValidate=(rule, value, callback) =>{
        if(value===true){
          if(this.ruleForm.isTopDatavalue == "" || this.ruleForm.isTopDatavalue == null){
            callback(new Error('请选择日期'));
          }else{
            callback();
          }
        }else{
          callback();
        }
      }
	  return {
	  		ruleForm: {
	  			reminderChecked:true,
          		isTopChecked:false,
          		isTopDatavalue:"",
          	},
          	// 验证
        	rules: {
				isTopChecked:[
		            { required: false, validator: isTopValidate, trigger: "blur" }
		        ]
			}
         }
	  }
	}
</script>
相关推荐
知识分享小能手30 分钟前
Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)
开发语言·前端·javascript·学习·前端框架·html·html5
IT、木易32 分钟前
大白话React第二章深入理解阶段
前端·javascript·react.js
晚安72038 分钟前
Ajax相关
前端·javascript·ajax
图书馆钉子户40 分钟前
怎么使用ajax实现局部刷新
前端·ajax·okhttp
bin91531 小时前
DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)
前端·javascript·vue.js·ecmascript·deepseek
qianmoQ1 小时前
第五章:工程化实践 - 第五节 - Tailwind CSS 常见问题解决方案
前端·css
那就可爱多一点点1 小时前
超高清大图渲染性能优化实战:从页面卡死到流畅加载
前端·javascript·性能优化
不能只会打代码2 小时前
六十天前端强化训练之第一天HTML5语义化标签深度解析与博客搭建实战
前端·html·html5
OpenTiny社区3 小时前
Node.js技术原理分析系列——Node.js的perf_hooks模块作用和用法
前端·node.js
菲力蒲LY3 小时前
输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路
java·前端·mybatis