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