作為初學者,以前做表單驗證都是自己寫的,目的是讓自己更好的了解代碼,加深自己對javascript的理解,但是其實在很久都知道有一個很好用的表單驗證插件:jQuery Validate.js,一直都沒時間去自己敲了練習一下,今天終於忍不住想試一試這個插件。
1,首先引入必要的js文件
<script src="jquery-2.1.4/jquery.min.js"></script> <script src="jquery-validation-1.14.0/dist/jquery.validate.min.js"></script> <script src="jquery-validation-1.14.0/dist/localization/messages_zh.min.js"></script> <script src="layer-v2.4/layer/layer.js"></script>
2,該插件和許多插件一樣,有兩種用法:1.將效驗規則寫到控件中,2.將效驗規則寫到js代碼中,我再此演示的是第二種
HTML代碼:
<form class="cmxform" id="signupForm" method="get" action=""> <fieldset> <legend>驗證完整的表單</legend> <p> <label for="firstname">名字</label> <input id="firstname" name="firstname" type="text"> </p> <p> <label for="lastname">姓氏</label> <input id="lastname" name="lastname" type="text"> </p> <p> <label for="username">用戶名</label> <input id="username" name="username" type="text"> </p> <p> <label for="password">密碼</label> <input id="password" name="password" type="password"> </p> <p> <label for="confirm_password">驗證密碼</label> <input id="confirm_password" name="confirm_password" type="password"> </p> <p> <label for="email">Email</label> <input id="email" name="email" type="email"> </p> <p> <label for="agree">請同意我們的聲明</label> <input type="checkbox" class="checkbox" id="agree" name="agree"> </p> <p> <input class="submit" type="submit" value="提交"> </p> </fieldset> </form>
Js代碼,在顯示我用了layer插件,是一款很好的彈窗插件,百度就可以找到
<script> $.validator.setDefaults({ submitHandler: function () { alert("提交事件!"); } }); $().ready(function () { // 在鍵盤按下並釋放及提交后驗證提交表單 $("#signupForm").validate({ rules: { firstname: "required", lastname: "required", username: { required: true, minlength: 2 }, password: { required: true, minlength: 5 }, confirm_password: { required: true, minlength: 5, equalTo: "#password" }, email: { required: true, email: true }, agree: "required" }, messages: { firstname: "請輸入您的名字", lastname: "請輸入您的姓氏", username: { required: "請輸入用戶名", minlength: "用戶名必需由兩個字母組成" }, password: { required: "請輸入密碼", minlength: "密碼長度不能小於 5 個字母" }, confirm_password: { required: "請輸入密碼", minlength: "密碼長度不能小於 5 個字母", equalTo: "兩次密碼輸入不一致" }, email: "請輸入一個正確的郵箱", agree: "請接受我們的聲明" }, //重寫showErrors showErrors: function (errorMap, errorList) { var msg = ""; $.each(errorList, function (i, v) { //msg += (v.message + "\r\n"); //在此處用了layer的方法,顯示效果更美觀 layer.tips(v.message, v.element, { time: 2000 }); return false; }); }, /* 失去焦點時不驗證 */ onfocusout: false }); }); </script> <style> .error { color: blue; } </style>
看下效果吧,是不是比之前自己寫的驗證效果好看了許多勒