1. 程式人生 > >Jquery Validate 表單驗證使用

Jquery Validate 表單驗證使用

left 分享圖片 導入 width field latest 基本結構 arc 輸入密碼

一、導入 js 庫

jquery-validation-1.14.0

鏈接:https://pan.baidu.com/s/1IoHW_HAsbK0NKt5TeNZ6Pg
提取碼:1s6x

<script src="../jquery-validation-1.14.0/lib/jquery.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>

1.1默認校驗規則

序號規則描述
1 required:true 必須輸入的字段。
2 remote:"check.php" 使用 ajax 方法調用 check.php 驗證輸入值。
3 email:true 必須輸入正確格式的電子郵件。
4 url:true 必須輸入正確格式的網址。
5 date:true 必須輸入正確格式的日期。日期校驗 ie6 出錯,慎用。
6 dateISO:true 必須輸入正確格式的日期(ISO),例如:2009-06-23,1998/01/22。只驗證格式,不驗證有效性。
7 number:true 必須輸入合法的數字(負數,小數)。
8 digits:true 必須輸入整數。
9 creditcard: 必須輸入合法的信用卡號。
10 equalTo:"#field" 輸入值必須和 #field 相同。
11 accept: 輸入擁有合法後綴名的字符串(上傳文件的後綴)。
12 maxlength:5 輸入長度最多是 5 的字符串(漢字算一個字符)。
13 minlength:10 輸入長度最小是 10 的字符串(漢字算一個字符)。
14 rangelength:[5,10]
輸入長度必須介於 5 和 10 之間的字符串(漢字算一個字符)。
15 range:[5,10] 輸入值必須介於 5 和 10 之間。
16 max:5 輸入值不能大於 5。
17 min:10 輸入值不能小於 10。

1.2默認提示

messages: {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date ( ISO ).",
    number: "Please enter a valid number.",
    digits: "Please enter only digits.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    maxlength: $.validator.format( "Please enter no more than {0} characters." ),
    minlength: $.validator.format( "Please enter at least {0} characters." ),
    rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
    range: $.validator.format( "Please enter a value between {0} and {1}." ),
    max: $.validator.format( "Please enter a value less than or equal to {0}." ),
    min: $.validator.format( "Please enter a value greater than or equal to {0}." )
}

二、使用方法

基本結構

<script>
$.validator.setDefaults({
    submitHandler: function() {
      //驗證正確後調用
      alert("提交事件!");
    }
});

$().ready(function() {
    //界面加載後觸發
    validateRule();
});

function validateRule() {
    //表單提交時觸發
  $("#signupForm").validate({
        rules: {
          username: "required"  //規則
        },
        messages: {
          username: {
            required: "請輸入用戶名"  //提示信息
          }
        }
    });
}
</script>
<form class="cmxform" id="signupForm" method="get" action=""> <!--表單代碼--> </form>

2.1常規使用

<script>
$.validator.setDefaults({
    submitHandler: function() {
      //驗證正確後觸發
      alert("提交事件!");
    }
});
    
$().ready(function() {
    //界面加載後觸發
    validateRule();
});
          
function validateRule() {
    //表單提交時觸發
  $("#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
          },
          "topic[]": {
            required: "#newsletter:checked",
            minlength: 2
          },
          agree: "required"
        },
        messages: {
          firstname: "請輸入您的名字",
          lastname: "請輸入您的姓氏",
          username: {
            required: "請輸入用戶名",
            minlength: "用戶名必需由兩個字母組成"
          },
          password: {
            required: "請輸入密碼",
            minlength: "密碼長度不能小於 5 個字母"
          },
          confirm_password: {
            required: "請輸入密碼",
            minlength: "密碼長度不能小於 5 個字母",
            equalTo: "兩次密碼輸入不一致"
          },
          email: "請輸入一個正確的郵箱",
          agree: "請接受我們的聲明",
          topic: "請選擇兩個主題"
        }
    });
}
</script>
<style>
.error{
    color:red;
}
</style>
</head>
<body>
<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>
      <label for="newsletter">我樂意接收新信息</label>
      <input type="checkbox" class="checkbox" id="newsletter" name="newsletter">
    </p>
    <fieldset id="newsletter_topics">
      <legend>主題 (至少選擇兩個) - 註意:如果沒有勾選“我樂意接收新信息”以下選項會隱藏,但我們這裏作為演示讓它可見</legend>
      <label for="topic_marketflash">
        <input type="checkbox" id="topic_marketflash" value="marketflash" name="topic">Marketflash
      </label>
      <label for="topic_fuzz">
        <input type="checkbox" id="topic_fuzz" value="fuzz" name="topic">Latest fuzz
      </label>
      <label for="topic_digester">
        <input type="checkbox" id="topic_digester" value="digester" name="topic">Mailing list digester
      </label>
      <label for="topic" class="error">Please select at least two topics you‘d like to receive.</label>
    </fieldset>
    <p>
      <input class="submit" type="submit" value="提交">
    </p>
  </fieldset>
</form>
</body>

2.2自定義規則使用

addMethod(name,method,message)方法

參數 name 是添加的方法的名字。

參數 method 是一個函數,接收三個參數 (value,element,param) 。

value 是元素的值,element 是元素本身,param 是參數。

<script>
$.validator.setDefaults({
    submitHandler: function() {
      //驗證正確後調用
      alert("提交事件!");
    }
});
    
$().ready(function() {
    //界面加載後觸發
    validateRule();
});
    
    //自定義 "checkname" 校驗方法
$.validator.addMethod("checkname", function (value, element, params) {
    var checkname = /^[\u4e00-\u9fa5]{1,6}$/;
    return this.optional(element) || (checkname.test(value));
});
    
/**
//也可以這樣寫,可以不用再在messages裏寫信息了
$.validator.addMethod("checkname", function (value, element, params) {
    var checkname = /^[\u4e00-\u9fa5]{1,6}$/;
    return this.optional(element) || (checkname.test(value));
}, $.validator.format("請輸入1-6位中文字符"));
 **/
    
function validateRule() {
    //表單提交時觸發
  $("#signupForm").validate({
        rules: {
          username: {
            required: true,
            checkname:true
          }
        },
        messages: {
          username: {
            required: "請輸入用戶名",
       checkname:"請輸入1-6位中文字符"
          }
        }
    });
}
</script>
<style>
.error{
    color:red;
}
</style>
</head>
<body>
<form class="cmxform" id="signupForm" method="get" action="">
    <p>
      <label for="username">名字</label>
      <input id="username" name="username" type="text">
    </p>
    <p>
      <input class="submit" type="submit" value="提交">
    </p>
</form>
</body>

2.3收集的一些規則

身份證號碼驗證

jQuery.validator.addMethod("idcardno", function(value, element) {
            return this.optional(element) || isIdCardNo(value);
        }, "請正確輸入身份證號碼");

字母數字

jQuery.validator.addMethod("alnum", function(value, element) {
            return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
        }, "只能包括英文字母和數字");

郵政編碼驗證

jQuery.validator.addMethod("zipcode", function(value, element) {
            var tel = /^[0-9]{6}$/;
            return this.optional(element) || (tel.test(value));
        }, "請正確填寫郵政編碼");

漢字

jQuery.validator.addMethod("chcharacter", function(value, element) {
            var tel = /^[u4e00-u9fa5]+$/;
            return this.optional(element) || (tel.test(value));
        }, "請輸入漢字");

字符最小長度驗證(一個中文字符長度為2)

技術分享圖片
jQuery.validator.addMethod("stringMinLength", function(value, element, param) {
            var length = value.length;
            for(var i = 0; i < value.length; i++) {
                if(value.charCodeAt(i) > 127) {
                    length++;
                }
            }
            return this.optional(element) || (length >= param);
        }, $.validator.format("長度不能小於 { 0 }!"));
技術分享圖片

字符最大長度驗證(一個中文字符長度為2)

技術分享圖片
jQuery.validator.addMethod("stringMaxLength", function(value, element, param) {
            var length = value.length;
            for(var i = 0; i < value.length; i++) {
                if(value.charCodeAt(i) > 127) {
                    length++;
                }
            }
            return this.optional(element) || (length <= param);
        }, $.validator.format("長度不能大於 { 0 }!"));
技術分享圖片

字符驗證

jQuery.validator.addMethod("string", function(value, element) {
            return this.optional(element) || /^[u0391-uFFE5w]+$/.test(value);
        }, "不允許包含特殊符號!");

手機號碼驗證

jQuery.validator.addMethod("mobile", function(value, element) {
            var length = value.length;
            return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+d{8})$/.test(value));
        }, "手機號碼格式錯誤!");

電話號碼驗證

jQuery.validator.addMethod("phone", function(value, element) {
            var tel = /^(d{3,4}-?)?d{7,9}$/g;
            return this.optional(element) || (tel.test(value));
        }, "電話號碼格式錯誤!");

必須以特定字符串開頭驗證

jQuery.validator.addMethod("begin", function(value, element, param) {
            var begin = new RegExp(" ^ "+param);
            return this.optional(element) || (begin.test(value));
        }, $.validator.format("必須以 { 0 } 開頭!"));

驗證兩次輸入值是否不相同

jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
            return value != $(param).val();
        }, $.validator.format("兩次輸入不能相同!"));

驗證值不允許與特定值等於

jQuery.validator.addMethod("notEqual", function(value, element, param) {
            return value != param;
        }, $.validator.format("輸入值不允許為 { 0 }!"));

驗證值必須大於特定值(不能等於)

jQuery.validator.addMethod("gt", function(value, element, param) {
            return value > param;
        }, $.validator.format("輸入值必須大於 { 0 }!"));

小數點前最多9位,小數點後最多6位

jQuery.validator.addMethod("decimal", function (value, element) {
    return this.optional(element) || /^([1-9]\d{0,8}|0)(\.\d{1,6})?$/.test(value);
}, "小數點前最多9位,小數點後最多6位^_^");

結束時間不能小於開始時間

jQuery.validator.addMethod("laterTo", function (value, element, param) {
    return $(param).val().split("-").join("") < $(element).val().split("-").join("");
}, "結束時間不能小於開始時間^_^");

Jquery Validate 表單驗證使用