ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vue-表单验证-全选-反选-删除-批量删除

2021-09-01 01:01:23  阅读:145  来源: 互联网

标签:status Vue false 删除 反选 errors user return email


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js"></script>
		<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
		<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
			integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
	</head>
	<body>
		<div id="app" style="width: 1000px;margin: 0 auto;margin-top: 60px;">
			<div class="form-group">
				<label>手机号</label>
				<input type="text" class="form-control" placeholder="(请输入手机号)" style="width: 500px;" v-model="mobile" />
			</div>
			<div class="form-group">
				<label>邮箱</label>
				<input type="text" class="form-control" placeholder="(请输入电子邮箱)" style="width: 500px;" v-model="email" />
			</div>
			<div class="form-group">
				<label>真实姓名</label>
				<input type="text" class="form-control" placeholder="(姓名必须是中文汉字)" style="width: 500px;"
					v-model="realname" />
			</div>

			<button type="button" class="btn btn-primary" @click="add">立即添加</button>
			<p v-for="(v,k) in errors" style="margin: 0 auto;margin-top: 20px;color: red;font-size: 18px;">
				{{v}}
			</p>

			<div style="margin-top: 60px;">
				<table class="table table-hover">
					<th><input type="checkbox" v-model="isCheck" @click="check()"></th>
					<th>编号</th>
					<th>手机号</th>
					<th>邮箱</th>
					<th>真实姓名</th>
					<th>操作</th>
					<tr v-for="(v,k) in user">
						<td><input type="checkbox" v-model="v.status"></td>
						<td>{{v.id}}</td>
						<td>{{v.mobile}}</td>
						<td>{{v.email}}</td>
						<td>{{v.realname}}</td>
						<td><button class="btn btn-danger" @click="del(k)">删除</button></td>
					</tr>
				</table>
				<button class="btn btn-danger" @click="checkAll()">全选</button>
				<button class="btn btn-danger" @click="checkNo()">全不选</button>
				<button class="btn btn-danger" @click="checkRev()">反选</button>
				<button class="btn btn-danger" @click="checkDel()">批量删除</button>
			</div>
		</div>
	</body>
</html>

<script>
	new Vue({
		el: "#app",
		data: {
			mobile: "",
			email: "",
			realname: "",
			errors: [],
			isCheck: false,
			user: [{
					id: 1,
					mobile: '18518393112',
					email: '123131@qq.com',
					realname: '邓超',
					status: false
				},
				{
					id: 2,
					mobile: '18518393000',
					email: '3322441@qq.com',
					realname: '戎飞',
					status: false
				}
			]
		},
		methods: {
			//添加
			add() {
				if (this.checkForm()) {
					//window.location.href = 'success.html'
					var obj = {
						id: this.user.length + 1,
						mobile: this.mobile,
						email: this.email,
						realname: this.realname,
						status: false
					}
					this.user.push(obj);
				}
			},
			//表单验证
			checkForm() {
				this.errors = [];
				if (this.mobile == '') {
					this.errors.push('手机号不能为空');
					return false;
				}
				var regMobile = /^1[35789]\d{9}$/;
				if (!regMobile.test(this.mobile)) {
					this.errors.push('手机号格式不正确');
					return false;
				}
				if (this.email == '') {
					this.errors.push('邮箱不能为空');
					return false;
				}
				var regEmail = /^\w{6,30}@\w{2,6}\.+(com|cn)$/;
				if (!regEmail.test(this.email)) {
					this.errors.push('邮箱格式为空');
					return false;
				}
				if (this.realname == '') {
					this.errors.push('真实姓名不能为空');
					return false;
				}
				var regRealname = /^[\u4e00-\u9fa5]{2,5}$/i;
				if (!regRealname.test(this.realname)) {
					this.errors.push('真实姓名格式不正确');
					return false;
				}

				if (this.errors.length == 0) {
					return true;
				} else {
					return false;
				}
			},
			//全选
			checkAll() {
				this.user.map(function(v, k) {
					v.status = true;
				});
			},
			//全不选
			checkNo() {
				this.user.map(function(v, k) {
					v.status = false;
				});
			},
			//反选
			checkRev() {
				this.user.map(function(v, k) {
					v.status = !v.status;
				});
			},
			//删除
			del(k) {
				this.user.splice(k, 1);
			},
			//批量删除
			checkDel() {
				var arr = [];
				this.user.map(function(v, k) {
					if (v.status == false) {
						arr.push(v);
					}
				});
				this.user = arr;
			},
			//点击复选框,全选/取消全选
			check() {
				if (this.isCheck == false) {
					this.user.map(function(v, k) {
						v.status = true;
					});
				} else {
					this.user.map(function(v, k) {
						v.status = false;
					});
				}
			}

		}
	});
</script>

 

标签:status,Vue,false,删除,反选,errors,user,return,email
来源: https://www.cnblogs.com/superzwb/p/15212943.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有