1.注冊
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<script src="src/vue.min.js"></script>
<script src="src/vue-validator.min.js"></script>-->
<script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
<style>
.red {
color: red;
}
.btn{
display: inline-block;
padding: 10px;
background: orange;
color: #FFF;
cursor: pointer;
}
.btn:hover{
background: orangered;
}
</style>
</head>
<body id="app">
<validator name="validatorMethod">
<div class="username">
<label for="">用戶名:</label>
<input type="text" v-model="username" initial="off" v-validate:username="['username']" placeholder="請輸入用戶名">
<p class="red" v-show="$validatorMethod.username.noempty">用戶名不能為空</p>
<p class="red" v-show="$validatorMethod.username.username">由數字、26個英文字母或下划線和中文組成的字符串</p>
</div>
<div class="password">
<label for="">密碼:</label>
<input type="password" v-model="password" initial="off" v-validate:password="['integer']" placeholder="請輸入密碼">
<p class="red" v-if="$validatorMethod.password.integer">只能是數字</p>
</div>
<div class="password">
<label for="">確認密碼:</label>
<input type="password" v-model="newpassword" initial="off" v-validate:newpassword="{match:matchPassword}" placeholder="請輸入確認密碼">
<p class="red" v-if="$validatorMethod.newpassword.match">確認密碼和密碼不一致</p>
</div>
<div><a @click="loginMethods" class="btn">登錄</a></div>
</validator>
</body>
<script>
var vue = new Vue({
el: '#app',
data: {
comment:"",
username: "",
password: "",
newpassword:"",
matchPassword:false
},
validators: {
noempty:function(val){
var reg = /^\s*$/g, isFlag = true;
if(val == "" || reg.test(val)){
isFlag = false;
}
return isFlag;
},
username: function (val) {
return /^[A-Za-z0-9_\-\u4e00-\u9fa5]{1,10}$/.test(val);
},
integer: function (val) {
return /^[1-9]\d*$/.test(val);
},
match:function (val,result) {
return result;
}
},
methods:{
loginMethods:function () {
var self = this;
/**
* 驗證目標表單元素。
* true:驗證所有
*/
self.$validate(true,function () {
/*如果所有條件都是false*/
if(!self.$validatorMethod.invalid){
alert("登錄成功");
}
})
}
},
computed:{
matchPassword:function () {
return this.password == this.newpassword
}
}
})
</script>
</html>
2.同時驗證多個情況,也可以把驗證碼方法寫在html 中(個人不建議使用)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<script src="src/vue.min.js"></script>
<script src="src/vue-validator.min.js"></script>-->
<script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
<style>
.red {
color: red;
}
.btn{
display: inline-block;
padding: 10px;
background: orange;
color: #FFF;
cursor: pointer;
}
.btn:hover{
background: orangered;
}
</style>
</head>
<body id="app">
<validator name="validatorMethod">
<div class="username">
<label for="">用戶名:</label>
<!-- 或者這么寫-->
<!-- <input type="text" v-model="username" initial="off" v-validate:username="{noempty:true,username:true}" placeholder="請輸入用戶名">-->
<input type="text" v-model="username" initial="off" v-validate:username="['noempty','username']" placeholder="請輸入用戶名">
<p class="red" v-show="$validatorMethod.username.noempty">用戶名不能為空</p>
<p class="red" v-show="$validatorMethod.username.username">由數字、26個英文字母或下划線和中文組成的字符串</p>
</div>
<div class="password">
<label for="">密碼:</label>
<input type="password" v-model="password" initial="off" v-validate:password="{minlength:6,maxlength:20,pattern:'/^\d{6,20}$/'}" placeholder="請輸入密碼">
<p class="red" v-if="$validatorMethod.password.minlength">密碼最低6位數</p>
<p class="red" v-if="$validatorMethod.password.maxlength">密碼最高20位數</p>
<p class="red" v-if="$validatorMethod.password.pattern">只能是數字</p>
</div>
<div><a @click="loginMethods" class="btn">登錄</a></div>
</validator>
</body>
<script>
var vue = new Vue({
el: '#app',
data: {
comment:"",
username: "",
password: "",
newpassword:""
},
validators: {
noempty:function(val){
var reg = /^\s*$/g, isFlag = true;
if(val == "" || reg.test(val)){
isFlag = false;
}
return isFlag;
},
username: function (val) {
return /^[A-Za-z0-9_\-\u4e00-\u9fa5]{1,10}$/.test(val);
},
integer: function (val) {
return /^[1-9]\d*$/.test(val);
}
},
methods:{
loginMethods:function () {
var self = this;
/**
* 驗證目標表單元素。
* true:驗證所有
*/
self.$validate(true,function () {
/*如果所有條件都是false*/
if(!self.$validatorMethod.invalid){
alert("登錄成功");
}
})
}
}
})
</script>
</html>
3.提交時驗證所有表單:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<script src="src/vue.min.js"></script>
<script src="src/vue-validator.min.js"></script>-->
<script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
<style>
.red {
color: red;
}
.btn{
display: inline-block;
padding: 10px;
background: orange;
color: #FFF;
cursor: pointer;
}
.btn:hover{
background: orangered;
}
</style>
</head>
<body id="app">
<validator name="validatorMethod">
<div class="username">
<label for="">用戶名:</label>
<input type="text" v-model="username" initial="off" v-validate:username="['username']" placeholder="請輸入用戶名">
<p class="red" v-if="$validatorMethod.username.username">由數字、26個英文字母或下划線和中文組成的字符串</p>
</div>
<div class="password">
<label for="">密碼:</label>
<input type="password" v-model="password" initial="off" v-validate:password="['integer']" placeholder="請輸入密碼">
<p class="red" v-if="$validatorMethod.password.integer">只能是數字</p>
</div>
<div><a @click="loginMethods" class="btn">登錄</a></div>
</validator>
</body>
<script>
var vue = new Vue({
el: '#app',
data: {
username: "",
password: ""
},
validators: {
username: function (val) {
return /^[A-Za-z0-9_\-\u4e00-\u9fa5]{1,10}$/.test(val);
},
integer: function (val) {
return /^[1-9]\d*$/.test(val);
}
},
methods:{
loginMethods:function () {
var self = this;
/**
* 驗證目標表單元素。
* true:驗證所有
*/
self.$validate(true,function () {
/*如果所有條件都是false*/
if(!self.$validatorMethod.invalid){
alert("登錄成功");
}
})
}
}
})
</script>
</html>
4.提交時指定表單驗證:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<script src="src/vue.min.js"></script>
<script src="src/vue-validator.min.js"></script>-->
<script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
<style>
.red {
color: red;
}
.btn{
display: inline-block;
padding: 10px;
background: orange;
color: #FFF;
cursor: pointer;
}
.btn:hover{
background: orangered;
}
</style>
</head>
<body id="app">
<validator name="validatorMethod">
<div class="username">
<label for="">用戶名:</label>
<input type="text" v-model="username" initial="off" v-validate:username="['username']" placeholder="請輸入用戶名">
<p class="red" v-if="$validatorMethod.username.username">由數字、26個英文字母或下划線和中文組成的字符串</p>
</div>
<div class="password">
<label for="">密碼:</label>
<input type="password" v-model="password" placeholder="請輸入密碼">
<p class="red" v-if="$validatorMethod.password.integer">只能是數字</p>
</div>
<div><a @click="loginMethods" class="btn">登錄</a></div>
</validator>
</body>
<script>
var vue = new Vue({
el: '#app',
data: {
username: "",
password: ""
},
validators: {
username: function (val) {
return /^[A-Za-z0-9_\-\u4e00-\u9fa5]{1,10}$/.test(val);
},
integer: function (val) {
return /^[1-9]\d*$/.test(val);
}
},
methods:{
loginMethods:function () {
var self = this;
/**
* 驗證[username]表單元素。
*/
self.$validate('username',function () {
/*如果所有條件都是false*/
if(!self.$validatorMethod.username.username){
alert("登錄成功");
}
})
}
}
})
</script>
</html>
5.v-model 是對象類型的參數提交時驗證所有表單 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<script src="src/vue.min.js"></script>-->
<!--<script src="src/vue-validator.min.js"></script>-->
<script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
<style>
.red {
color: red;
}
.btn{
display: inline-block;
padding: 10px;
background: orange;
color: #FFF;
cursor: pointer;
}
.btn:hover{
background: orangered;
}
</style>
</head>
<body id="app">
<validator name="validatorMethod">
<div class="username">
<label for="">用戶名:</label>
<input type="text" v-model="items.username" initial="off" v-validate:username="['username']" placeholder="請輸入用戶名">
<p class="red" v-if="$validatorMethod.username.username">由數字、26個英文字母或下划線和中文組成的字符串</p>
</div>
<div class="password">
<label for="">密碼:</label>
<input type="password" v-model="items.password" initial="off" v-validate:password="['integer']" placeholder="請輸入密碼">
<p class="red" v-if="$validatorMethod.password.integer">只能是數字</p>
</div>
<div><a @click="loginMethods" class="btn">登錄</a></div>
</validator>
</body>
<script>
var vue = new Vue({
el: '#app',
data: {
items:{
username: "",
password: ""
}
},
validators: {
username: function (val) {
return /^[A-Za-z0-9_\-\u4e00-\u9fa5]{1,10}$/.test(val);
},
integer: function (val) {
return /^[1-9]\d*$/.test(val);
}
},
methods:{
loginMethods:function () {
var self = this;
/**
* 驗證目標表單元素。
* true:驗證所有
*/
self.$validate(true,function () {
/*如果所有條件都是false*/
if(!self.$validatorMethod.invalid){
alert("登錄成功");
}
})
}
}
})
</script>
</html>
6.v-model 參數命名是駝峰式提交時驗證所有表單:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<script src="src/vue.min.js"></script>-->
<!--<script src="src/vue-validator.min.js"></script>-->
<script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
<style>
.red {
color: red;
}
.btn{
display: inline-block;
padding: 10px;
background: orange;
color: #FFF;
cursor: pointer;
}
.btn:hover{
background: orangered;
}
</style>
</head>
<body id="app">
<validator name="validatorMethod">
<div class="username">
<label for="">用戶名:</label>
<input type="text" v-model="items.userName" initial="off" v-validate:user-name="['username']" placeholder="請輸入用戶名">
<p class="red" v-if="$validatorMethod.userName.username">由數字、26個英文字母或下划線和中文組成的字符串</p>
</div>
<div class="password">
<label for="">密碼:</label>
<input type="password" v-model="items.passWord" initial="off" v-validate:pass-word="['integer']" placeholder="請輸入密碼">
<p class="red" v-if="$validatorMethod.passWord.integer">只能是數字</p>
</div>
<div><a @click="loginMethods" class="btn">登錄</a></div>
</validator>
</body>
<script>
var vue = new Vue({
el: '#app',
data: {
items:{
userName: "",
passWord: ""
}
},
validators: {
username: function (val) {
return /^[A-Za-z0-9_\-\u4e00-\u9fa5]{1,10}$/.test(val);
},
integer: function (val) {
return /^[1-9]\d*$/.test(val);
}
},
methods:{
loginMethods:function () {
var self = this;
/**
* 驗證目標表單元素。
* true:驗證所有
*/
self.$validate(true,function () {
/*如果所有條件都是false*/
if(!self.$validatorMethod.invalid){
alert("登錄成功");
}
})
}
}
})
</script>
</html>
.
