书城项目第一阶段
1. 学习目标
- 实现登录表单校验
- 实现注册表单校验
2. 内容讲解
2.1 准备工作
创建目录后,把一整套现成的前端页面复制到新建的目录下,然后把vue.js文件复制到script目录下。
2.2 登录页面的表单验证
2.2.1 规则设定
- 用户名非空
- 密码非空
2.2.2 在login.html页面中加入Vue的环境
<script src="../../static/script/vue.js"></script>
2.2.3 案例思路

2.2.4 代码实现
HTML代码
<div id="app">
<div id="login_header">
<a href="../../index.html">
<img class="logo_img" alt="" src="../../static/img/logo.gif" />
</a>
</div>
<div class="login_banner">
<div id="l_content">
<span class="login_word">欢迎登录</span>
</div>
<div id="content">
<div class="login_form">
<div class="login_box">
<div class="tit">
<h1>尚硅谷会员</h1>
</div>
<div class="msg_cont">
<b></b>
<span class="errorMsg" style="color: red">{{errorMessage}}</span>
</div>
<div class="form">
<form action="login_success.html">
<label>用户名称:</label>
<input
class="itxt"
type="text"
placeholder="请输入用户名"
autocomplete="off"
tabindex="1"
name="username"
id="username"
v-model="username"
/>
<br />
<br />
<label>用户密码:</label>
<input
class="itxt"
type="password"
placeholder="请输入密码"
autocomplete="off"
tabindex="1"
name="password"
id="password"
v-model="password"
/>
<br />
<br />
<input type="submit" value="登录" id="sub_btn" @click="loginCheck"/>
</form>
<div class="tit">
<a href="regist.html">立即注册</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="bottom">
<span>
尚硅谷书城.Copyright ©2015
</span>
</div>
</div>
Vue代码
var vue = new Vue({
"el":"#app",
"data":{
"username":"",
"password":"",
"errorMessage":""
},
"methods":{
loginCheck(){
//判断用户名和密码是否为空
if (this.username != "") {
if (this.password == ""){
//就要阻止表单提交
event.preventDefault()
//加入提示功能
this.errorMessage = "密码不能为空"
}
}else {
//就要阻止表单提交
event.preventDefault()
//加入提示功能
this.errorMessage = "用户名不能为空"
}
}
}
});
2.3 注册页面的表单验证
2.3.1 在注册页面(register.html)中引入vue
<!--在注册页面引入vue-->
<script src="../../static/script/vue.js"></script>
HTML代码
<div id="app">
<div id="login_header">
<a href="../../index.html">
<img class="logo_img" alt="" src="../../static/img/logo.gif" />
</a>
</div>
<div class="login_banner">
<div class="register_form">
<h1>注册尚硅谷会员</h1>
<form action="regist_success.html">
<div class="form-item">
<div>
<label>用户名称:</label>
<input type="text" placeholder="请输入用户名" v-model="username" @blur="checkUsername"/>
</div>
<span style="color: red">{{usernameErrorMessage}}</span>
</div>
<div class="form-item">
<div>
<label>用户密码:</label>
<input type="password" placeholder="请输入密码" v-model="password"/>
</div>
<span style="color: red">{{passwordErrorMessage}}</span>
</div>
<div class="form-item">
<div>
<label>确认密码:</label>
<input type="password" placeholder="请输入确认密码" v-model="passwordConfirm"/>
</div>
<span style="color: red">{{confirmErrorMessage}}</span>
</div>
<div class="form-item">
<div>
<label>用户邮箱:</label>
<input type="text" placeholder="请输入邮箱" v-model="email"/>
</div>
<span style="color: red">{{emailErrorMessage}}</span>
</div>
<div class="form-item">
<div>
<label>验证码:</label>
<div class="verify">
<input type="text" placeholder="" v-model="code"/>
<img src="../../static/img/code.bmp" alt="" />
</div>
</div>
<!--<span>请输入正确的验证码</span>-->
</div>
<button class="btn" @click="registerCheck">注册</button>
</form>
</div>
</div>
<div id="bottom">
<span>
尚硅谷书城.Copyright ©2015
</span>
</div>
</div>
Vue代码
<script>
var vue = new Vue({
"el":"#app",
"data":{
"username":"",//用户名
"password":"",//密码
"passwordConfirm":"",//确认密码
"email":"",//邮箱
"code":"",//验证码
"usernameErrorMessage":"",
"passwordErrorMessage":"",
"confirmErrorMessage":"",
"emailErrorMessage":""
},
"methods":{
checkUsername(){
//校验用户名是否符合规则
//1. 编写一个正则表达式去描述这个规则
var usernameRegExp = /^[A-Za-z0-9_]{5,8}$/;
//2. 使用正则表达式校验用户名输入框里面的内容:this.username
if (!usernameRegExp.test(this.username)) {
//校验不通过
this.usernameErrorMessage = "用户名必须是5-8位的数字、字母或者下划线"
}else {
//符合规则了,就重新设置提示信息为空
this.usernameErrorMessage = ""
}
},
registerCheck(){
//注册校验的方法
//1. 校验用户名
//1.1 编写一个正则表达式去描述这个规则
var usernameRegExp = /^[A-Za-z0-9_]{5,8}$/;
//1.2 校验用户名是否符合规则
if (!usernameRegExp.test(this.username)) {
//用户名不符合规则,那么就阻止默认事件
event.preventDefault()
this.usernameErrorMessage = "用户名必须是5-8位的数字、字母或者下划线"
return
}
//2. 校验密码
//2.1 编写一个正则表达式去描述密码校验的规则
var passwordRegExp = /^[A-Za-z0-9_]{6,10}$/;
//2.2 使用正则表达式校验密码
if (!passwordRegExp.test(this.password)) {
//密码不符合规则,那么就阻止默认事件
event.preventDefault()
this.passwordErrorMessage = "密码必须是6-10位的数字、字母或者下划线"
return
}else {
this.passwordErrorMessage = ""
}
//3. 校验确认密码
//3.1 就是对比确认密码输入框的内容和密码输入框的内容是否一样
if (this.password != this.passwordConfirm) {
event.preventDefault()
this.confirmErrorMessage = "两次输入的密码必须一致"
return
}else {
this.confirmErrorMessage = ""
}
//4. 校验邮箱格式
var emailRegExp = /^[a-zA-Z0-9_\.-]+@([a-zA-Z0-9-]+[\.]{1})+[a-zA-Z]+$/;
if(!emailRegExp.test(this.email)){
event.preventDefault()
this.emailErrorMessage = "邮箱格式不正确"
return
}else {
this.emailErrorMessage = ""
}
}
}
/*"watch":{
//对用户名添加监听
"username":function (inputValue) {
//校验用户名是否符合规则
//1. 编写一个正则表达式去描述这个规则
var usernameRegExp = /^[A-Za-z0-9_]{5,8}$/;
//2. 使用正则表达式校验用户名输入框里面的内容:inputValue
if (!usernameRegExp.test(inputValue)) {
//校验不通过
this.usernameErrorMessage = "用户名必须是5-8位的数字、字母或者下划线"
}else {
//符合规则了,就重新设置提示信息为空
this.usernameErrorMessage = ""
}
}
}*/
});
</script>