StevenBot-Saltsam

          眼睛能裝下世界,為何卻裝不下眼淚? 一只風箏一輩子只為一根線冒險。 那不是一場游戲,為何總有一根線牽著心懷,隱隱作疼? 那不是一段邂逅,為何飄在橋上的影子,總纏進夢鄉? 那不是一個夢境,為何你的溫柔私語,總是不經意的響起?

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          datas link

          OSChinal Sources codes Library

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          jquery validate 驗證器

          jquery validate 驗證器  

          默認校驗規則

          (1)required:true                    必輸字段
          (2)remote:"check.php"          使用ajax方法調用check.php驗證輸入值
          (3)email:true                  必須輸入正確格式的電子郵件
          (4)url:true                    必須輸入正確格式的網址
          (5)date:true                必須輸入正確格式的日期
          (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

          默認的提示
          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).",
              dateDE: "Bitte geben Sie ein g眉ltiges Datum ein.",
              number: "Please enter a valid number.",
              numberDE: "Bitte geben Sie eine Nummer ein.",
              digits: "Please enter only digits",
              creditcard: "Please enter a valid credit card number.",
              equalTo: "Please enter the same value again.",
              accept: "Please enter a value with a valid extension.",
              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}.")
          }


          如需要修改,可在js代碼中加入:
          jQuery.extend(jQuery.validator.messages, {
                  required: "必選字段",
          remote: "請修正該字段",
          email: "請輸入正確格式的電子郵件",
          url: "請輸入合法的網址",
          date: "請輸入合法的日期",
          dateISO: "請輸入合法的日期 (ISO).",
          number: "請輸入合法的數字",
          digits: "只能輸入整數",
          creditcard: "請輸入合法的信用卡號",
          equalTo: "請再次輸入相同的值",
          accept: "請輸入擁有合法后綴名的字符串",
          maxlength: jQuery.validator.format("請輸入一個長度最多是 {0} 的字符串"),
          minlength: jQuery.validator.format("請輸入一個長度最少是 {0} 的字符串"),
          rangelength: jQuery.validator.format("請輸入一個長度介于 {0} 和 {1} 之間的字符串"),
          range: jQuery.validator.format("請輸入一個介于 {0} 和 {1} 之間的值"),
          max: jQuery.validator.format("請輸入一個最大為 {0} 的值"),
          min: jQuery.validator.format("請輸入一個最小為 {0} 的值")
          });
          推薦做法,將此文件放入messages_cn.js中,在頁面中引入
          <script src="../js/messages_cn.js" type="text/javascript"></script>

          四、使用方式
          1.將校驗規則寫到控件中
          <script src="../js/jquery.js" type="text/javascript"></script>
          <script src="../js/jquery.validate.js" type="text/javascript"></script>
          <script src="./js/jquery.metadata.js" type="text/javascript"></script>
          $().ready(function() {
          $("#signupForm").validate();
          });

          <form id="signupForm" method="get" action="">
              <p>
                  <label for="firstname">Firstname</label>
                  <input id="firstname" name="firstname" class="required" />
              </p>
          <p>
          <label for="email">E-Mail</label>
          <input id="email" name="email" class="required email" />
          </p>
          <p>
          <label for="password">Password</label>
          <input id="password" name="password" type="password" class="{required:true,minlength:5}" />
          </p>
          <p>
          <label for="confirm_password">確認密碼</label>
          <input id="confirm_password" name="confirm_password" type="password" class="{required:true,minlength:5,equalTo:'#password'}" />
          </p>
              <p>
                  <input class="submit" type="submit" value="Submit"/>
              </p>
          </form>
          使用class="{}"的方式,必須引入包:jquery.metadata.js
          可以使用如下的方法,修改提示內容:
          class="{required:true,minlength:5,messages:{required:'請輸入內容'}}"
          在使用equalTo關鍵字時,后面的內容必須加上引號,如下代碼:
          class="{required:true,minlength:5,equalTo:'#password'}"
          另外一個方式,使用關鍵字:meta(為了元數據使用其他插件你要包裝 你的驗證規則 在他們自己的項目中可以用這個特殊的選項)
          Tell the validation plugin to look inside a validate-property in metadata for validation rules.
          例如:
          meta: "validate"
          <input id="password" name="password" type="password" class="{validate:{required:true,minlength:5}}" />

          再有一種方式:
          $.metadata.setType("attr", "validate");
          這樣可以使用validate="{required:true}"的方式,或者class="required",但class="{required:true,minlength:5}"將不起作用

          2.將校驗規則寫到代碼中

          $().ready(function() {
          $("#signupForm").validate({
                  rules: {
             firstname: "required",
             email: {
              required: true,
              email: true
             },
             password: {
              required: true,
              minlength: 5
             },
             confirm_password: {
              required: true,
              minlength: 5,
              equalTo: "#password"
             }
          },
                  messages: {
             firstname: "請輸入姓名",
             email: {
              required: "請輸入Email地址",
              email: "請輸入正確的email地址"
             },
             password: {
              required: "請輸入密碼",
              minlength: jQuery.format("密碼不能小于{0}個字符")
             },
             confirm_password: {
              required: "請輸入確認密碼",
              minlength: "確認密碼不能小于5個字符",
              equalTo: "兩次輸入密碼不一致不一致"
             }
          }
              });
          });
          //messages處,如果某個控件沒有message,將調用默認的信息

          <form id="signupForm" method="get" action="">
              <p>
                  <label for="firstname">Firstname</label>
                  <input id="firstname" name="firstname" />
              </p>
          <p>
          <label for="email">E-Mail</label>
          <input id="email" name="email" />
          </p>
          <p>
          <label for="password">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>
                  <input class="submit" type="submit" value="Submit"/>
              </p>
          </form>
          required:true 必須有值
          required:"#aa:checked"表達式的值為真,則需要驗證
          required:function(){}返回為真,表時需要驗證
          后邊兩種常用于,表單中需要同時填或不填的元素

          五、常用方法及注意問題
          1.用其他方式替代默認的SUBMIT
          $().ready(function() {
          $("#signupForm").validate({
                  submitHandler:function(form){
                      alert("submitted");    
                      form.submit();
                  }     
              });
          });
          可以設置validate的默認值,寫法如下:
          $.validator.setDefaults({
          submitHandler: function(form) { alert("submitted!");form.submit(); }
          });
          如果想提交表單, 需要使用form.submit()而不要使用$(form).submit()

          2.debug,如果這個參數為true,那么表單不會提交,只進行檢查,調試時十分方便
          $().ready(function() {
          $("#signupForm").validate({
                  debug:true
              });
          });
          如果一個頁面中有多個表單,用
          $.validator.setDefaults({
             debug: true
          })

          3.ignore:忽略某些元素不驗證
          ignore: ".ignore"

          4.errorPlacement:Callback Default: 把錯誤信息放在驗證的元素后面 
          指明錯誤放置的位置,默認情況是:error.appendTo(element.parent());即把錯誤信息放在驗證的元素后面 
          errorPlacement: function(error, element) {   
              error.appendTo(element.parent());   
          }
          //示例:
          <tr>
              <td class="label"><label id="lfirstname" for="firstname">First Name</label></td>
              <td class="field"><input id="firstname" name="firstname" type="text" value="" maxlength="100" /></td>
              <td class="status"></td>
          </tr>
          <tr>
              <td style="padding-right: 5px;">
                  <input id="dateformat_eu" name="dateformat" type="radio" value="0" />
                  <label id="ldateformat_eu" for="dateformat_eu">14/02/07</label>
              </td>
              <td style="padding-left: 5px;">
                  <input id="dateformat_am" name="dateformat" type="radio" value="1" />
                  <label id="ldateformat_am" for="dateformat_am">02/14/07</label>
              </td>
              <td></td>
          </tr>
          <tr>
              <td class="label">&nbsp;</td>
              <td class="field" colspan="2">
                  <div id="termswrap">
                      <input id="terms" type="checkbox" name="terms" />
                      <label id="lterms" for="terms">I have read and accept the Terms of Use.</label>
                  </div>
              </td>
          </tr>
          errorPlacement: function(error, element) {
              if ( element.is(":radio") )
                  error.appendTo( element.parent().next().next() );
              else if ( element.is(":checkbox") )
                  error.appendTo ( element.next() );
              else
                  error.appendTo( element.parent().next() );
          }
          代碼的作用是:一般情況下把錯誤信息顯示在<td class="status"></td>中,如果是radio顯示在<td></td>中,如果是checkbox顯示在內容的后面
          errorClass:String Default: "error" 
          指定錯誤提示的css類名,可以自定義錯誤提示的樣式
          errorElement:String Default: "label" 
          用什么標簽標記錯誤,默認的是label你可以改成em
          errorContainer:Selector 
          顯示或者隱藏驗證信息,可以自動實現有錯誤信息出現時把容器屬性變為顯示,無錯誤時隱藏,用處不大
          errorContainer: "#messageBox1, #messageBox2"
          errorLabelContainer:Selector 
          把錯誤信息統一放在一個容器里面。
          wrapper:String
          用什么標簽再把上邊的errorELement包起來
          一般這三個屬性同時使用,實現在一個容器內顯示所有錯誤提示的功能,并且沒有信息時自動隱藏
          errorContainer: "div.error",
          errorLabelContainer: $("#signupForm div.error"),
          wrapper: "li"

          設置錯誤提示的樣式,可以增加圖標顯示
          input.error { border: 1px solid red; }
          label.error {
          background:url("./demo/images/unchecked.gif") no-repeat 0px 0px;
          padding-left: 16px;
          padding-bottom: 2px;
          font-weight: bold;
          color: #EA5200;
          }
          label.checked {
          background:url("./demo/images/checked.gif") no-repeat 0px 0px;
          }
          success:String,Callback 
          要驗證的元素通過驗證后的動作,如果跟一個字符串,會當做一個css類,也可跟一個函數
          success: function(label) {
              // set &nbsp; as text for IE
              label.html("&nbsp;").addClass("checked");
              //label.addClass("valid").text("Ok!")
          }
          添加"valid" 到驗證元素, 在CSS中定義的樣式<style>label.valid {}</style>
          success: "valid"


          nsubmit: Boolean Default: true 
          提交時驗證. 設置唯false就用其他方法去驗證
          onfocusout:Boolean Default: true 
          失去焦點是驗證(不包括checkboxes/radio buttons) 
          onkeyup:Boolean Default: true 
          在keyup時驗證.
          onclick:Boolean Default: true 
          在checkboxes 和 radio 點擊時驗證
          focusInvalid:Boolean Default: true 
          提交表單后,未通過驗證的表單(第一個或提交之前獲得焦點的未通過驗證的表單)會獲得焦點
          focusCleanup:Boolean Default: false 
          如果是true那么當未通過驗證的元素獲得焦點時,移除錯誤提示。避免和 focusInvalid 一起用

          // 重置表單
          $().ready(function() {
          var validator = $("#signupForm").validate({
                  submitHandler:function(form){
                      alert("submitted");    
                      form.submit();
                  }     
              });
              $("#reset").click(function() {
                  validator.resetForm();
              });
          });

          remote:URL
          使用ajax方式進行驗證,默認會提交當前驗證的值到遠程地址,如果需要提交其他的值,可以使用data選項
          remote: "check-email.php"
          remote: {
              url: "check-email.php",     //后臺處理程序
              type: "post",               //數據發送方式
              dataType: "json",           //接受數據格式    
              data: {                     //要傳遞的數據
                  username: function() {
                      return $("#username").val();
                  }
              }
          }

          遠程地址只能輸出 "true" 或 "false",不能有其它輸出


          addMethod:name, method, message
          自定義驗證方法

          // 中文字兩個字節
          jQuery.validator.addMethod("byteRangeLength", 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[0] && length <= param[1] );    
          }, $.validator.format("請確保輸入的值在{0}-{1}個字節之間(一個中文字算2個字節)"));

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

          radio和checkbox、select的驗證
          radio的required表示必須選中一個
          <input type="radio" id="gender_male" value="m" name="gender" class="{required:true}" />
          <input type="radio" id="gender_female" value="f" name="gender"/>
          checkbox的required表示必須選中
          <input type="checkbox" class="checkbox" id="agree" name="agree" class="{required:true}" />
          checkbox的minlength表示必須選中的最小個數,maxlength表示最大的選中個數,rangelength:[2,3]表示選中個數區間
          <input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" class="{required:true, minlength:2}" />
          <input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]" />
          <input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]" />

          select的required表示選中的value不能為空
          <select id="jungle" name="jungle" title="Please select something!" class="{required:true}">
              <option value=""></option>
              <option value="1">Buga</option>
              <option value="2">Baga</option>
              <option value="3">Oi</option>
          </select>
          select的minlength表示選中的最小個數(可多選的select),maxlength表示最大的選中個數,rangelength:[2,3]表示選中個數區間
          <select id="fruit" name="fruit" title="Please select at least two fruits" class="{required:true, minlength:2}" multiple="multiple">
              <option value="b">Banana</option>
              <option value="a">Apple</option>
              <option value="p">Peach</option>
              <option value="t">Turtle</option>
          </select>




          posted on 2011-11-04 15:01 Steven_bot 閱讀(268) 評論(0)  編輯  收藏 所屬分類: 遇到的一些問題

          主站蜘蛛池模板: 富锦市| 肥乡县| 门源| 永和县| 迁西县| 沙坪坝区| 孝义市| 甘泉县| 汝城县| 前郭尔| 浮梁县| 平江县| 石渠县| 南木林县| 神农架林区| 泸水县| 天镇县| 霍城县| 富顺县| 咸宁市| 博客| 万源市| 安化县| 黎川县| 恭城| 诏安县| 阿瓦提县| 台湾省| 台州市| 盈江县| 新源县| 长寿区| 临湘市| 吉隆县| 临江市| 巴塘县| 定安县| 凤山县| 安阳县| 蒙城县| 朔州市|