搜尋
首頁web前端js教程jQuery Validate驗證框架經典大全_jquery

本文是腳本之家小編給大家分享的jquery validate驗證框架大全,本文內容講的非常詳細,有興趣的朋友一起看看吧

一、導入js庫

<script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="<%=path %>/validate/jquery.validate.min.js"></script>

註:返回web專案的根路徑。

二、預設校驗規則

(1)、required:true          .jsp"   使用ajax方法呼叫remote-valid.jsp驗證輸入值
(3)、email:true                       必須輸入正確格式的網址
(5)、date:true                  09-06-23 ,1998/01/22 只驗證格式,不驗證有效性
(7)、number:true                   必須輸入整數
(9)、creditcard:true             必須輸入合法的信用卡號
(10)、equalTo:"#password"       與輸入值必須及#passwordp.        輸入擁有合法後綴名的字串(上傳檔案的字尾)
(12)、maxlength:5                輸入長度最多為5的字串(漢字算  的字串(漢字算一個字元)
(14)、rangelength:[5,10]         輸入長度必須介於5 和10 之間的字串")(漢字算一個字元)
(15)、range:[5 ,10]               輸入值必須介於5 與10 之間
(16)、max:5                                輸入值無法小於10


三、預設的提示



如需要修改,可在js程式碼中加入:

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}.")
},

推薦做法,將此文件放入messages_cn.js中,在頁面中引入

$.extend($.validator.messages, {
  required: "必选字段",
  remote: "请修正该字段",
  email: "请输入正确格式的电子邮件",
  url: "请输入合法的网址",
  date: "请输入合法的日期",
  dateISO: "请输入合法的日期 (ISO).",
  number: "请输入合法的数字",
  digits: "只能输入整数",
  creditcard: "请输入合法的信用卡号",
  equalTo: "请再次输入相同的值",
  accept: "请输入拥有合法后缀名的字符串",
  maxlength: $.validator.format("请输入一个长度最多是 {0} 的字符串"),
  minlength: $.validator.format("请输入一个长度最少是 {0} 的字符串"),
  rangelength: $.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
  range: $.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
  max: $.validator.format("请输入一个最大为 {0} 的值"),
  min: $.validator.format("请输入一个最小为 {0} 的值")
});

四、使用方式

<script type="text/javascript" src="<%=path %>/validate/messages_cn.js"></script>

1、metadata用法,將校驗規則寫到控制

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
  String path = request.getContextPath();
  String basePath = request.getScheme() + "://" + request.getServerName() + ":"
      + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>jQuery Validate验证框架详解-metadata用法</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <script type="text/javascript" src="<%=request.getContextPath()%>/validate/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/validate/jquery.validate.min.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/validate/jquery.metadata.min.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/validate/messages_zh.js"></script>
    <script type="text/javascript">
    $(function(){
      $("#myform").validate();
    });
    </script>
  </head>
  <body>
    <form id="myform" method="post" action="">
      <p>
        <label for="myname">用户名:</label>
        <!-- id和name最好同时写上 -->
        <input id="myname" name="myname" class="required" />
      </p>
      <p>
        <label for="email">E-Mail:</label>
        <input id="email" name="email" class="required email" />
      </p>
      <p>
        <label for="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:&#39;#password&#39;}" />
      </p>
      <p>
        <label for="confirm_password">性别:</label>
        <!-- 表示必须选中一个 -->
        <input type="radio" id="gender_male" value="m" name="gender" class="{required:true}" />
        <input type="radio" id="gender_female" value="f" name="gender"/>
      </p>
      <p>
        <label for="confirm_password">爱好:</label>
        <!-- checkbox的minlength表示必须选中的最小个数,maxlength表示最大的选中个数,rangelength:[2,3]表示选中个数区间 -->
        <input type="checkbox" id="spam_email" value="email" name="spam[]" class="{required:true, minlength:2}" />
        <input type="checkbox" id="spam_phone" value="phone" name="spam[]" />
        <input type="checkbox" id="spam_mail" value="mail" name="spam[]" />
      </p>
      <p>
        <label for="confirm_password">城市:</label>
        <select id="jungle" name="jungle" title="Please select something!" class="{required:true}">
          <option value=""></option>
          <option value="1">厦门</option>
          <option value="2">泉州</option>
        <option value="3">Oi</option>
      </select>
      </p>
      <p>
        <input class="submit" type="submit" value="立即注册" />
      </p>
    </form>
  </body>
</html>
使用class="{}"的方式,必須引入套件:jquery.metadata.js;

可以使用以下的方法,修改提示內容:class="{ required:true,minlength:5,messages:{required:'請輸入內容'}}";

jQuery Validate驗證框架經典大全_jquery

2、將校驗規則寫到js程式碼

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
  String path = request.getContextPath();
  String basePath = request.getScheme() + "://" + request.getServerName() + ":"
      + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>jQuery Validate验证框架详解</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <script type="text/javascript" src="<%=request.getContextPath()%>/validate/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/validate/jquery.validate.min.js"></script>
    <script type="text/javascript">
    $(function(){
      var validate = $("#myform").validate({
        debug: true, //调试模式取消submit的默认提交功能  
        //errorClass: "label.error", //默认为错误的样式类为:error  
        focusInvalid: false, //当为false时,验证无效时,没有焦点响应 
        onkeyup: false,  
        submitHandler: function(form){  //表单提交句柄,为一回调函数,带一个参数:form  
          alert("提交表单");  
          form.submit();  //提交表单  
        },  
        rules:{
          myname:{
            required:true
          },
          email:{
            required:true,
            email:true
          },
          password:{
            required:true,
            rangelength:[3,10]
          },
          confirm_password:{
            equalTo:"#password"
          }          
        },
        messages:{
          myname:{
            required:"必填"
          },
          email:{
            required:"必填",
            email:"E-Mail格式不正确"
          },
          password:{
            required: "不能为空",
            rangelength: $.format("密码最小长度:{0}, 最大长度:{1}。")
          },
          confirm_password:{
            equalTo:"两次密码输入不一致"
          }                  
        }
      });  
    });
    </script>
  </head>
  <body>
    <form id="myform" method="post" action="">
      <p>
        <label for="myname">用户名:</label>
        <!-- id和name最好同时写上 -->
        <input id="myname" name="myname" />
      </p>
      <p>
        <label for="email">E-Mail:</label>
        <input id="email" name="email" />
      </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>
        <input class="submit" type="submit" value="立即注册" />
      </p>
    </form>
  </body>
</html>

1、用其他方式取代預設的submit

可以設定validate的預設值,寫法如下:
$(function(){
  $("#signupForm").validate({
    submitHandler:function(form){
      alert("submit!");  
      form.submit();
    }  
  });
});

如果想提交表單,需要使用form.submit(),而不要使用$(form).submit( )
$.validator.setDefaults({
submitHandler: function(form) { alert("submit!"); form.submit(); }
});

2、debug,只驗證不提交表單

如果這個參數為true,那麼表單不會提交,只進行檢查,調試時十分方便


$(function(){
  $("#signupForm").validate({
    debug:true
  });
});


如果一個頁面中有多個表單都想設定成為debug,用


3、ignore:忽略某些元素不驗證
$.validator.setDefaults({
debug: true
})

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"> </td>
  <td class="field" colspan="2">
    <p id="termswrap">
      <input id="terms" type="checkbox" name="terms" />
      <label id="lterms" for="terms">I have read and accept the Terms of Use.</label>
    </p>
  </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());
}

代码的作用是:一般情况下把错误信息显示在

中,如果是radio显示在中,如果是checkbox显示在内容的后面

errorClass:String Default: "error"

指定错误提示的css类名,可以自定义错误提示的样式

errorElement:String Default: "label"

用什么标签标记错误,默认的是label你可以改成em

errorContainer:Selector

显示或者隐藏验证信息,可以自动实现有错误信息出现时把容器属性变为显示,无错误时隐藏,用处不大

errorContainer: "#messageBox1, #messageBox2"

errorLabelContainer:Selector

把错误信息统一放在一个容器里面。

wrapper:String

用什么标签再把上边的errorELement包起来

一般这三个属性同时使用,实现在一个容器内显示所有错误提示的功能,并且没有信息时自动隐藏

errorContainer: "p.error",
errorLabelContainer: $("#signupForm p.error"),
wrapper: "li"

5、更改错误信息显示的样式

设置错误提示的样式,可以增加图标显示,在该系统中已经建立了一个validation.css专门用于维护校验文件的样式

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;
}

6、每个字段验证通过执行函数

success:String,Callback

要验证的元素通过验证后的动作,如果跟一个字符串,会当做一个css类,也可跟一个函数

success: function(label) {
  // set   as text for IE
  label.html(" ").addClass("checked");
  //label.addClass("valid").text("Ok!")
}

添加"valid"到验证元素, 在CSS中定义的样式

success: "valid"

7、验证的触发方式修改

下面的虽然是boolean型的,但建议除非要改为false,否则别乱添加。

a.onsubmit:Boolean Default: true

提交时验证. 设置唯false就用其他方法去验证

b.onfocusout:Boolean Default: true

失去焦点是验证(不包括checkboxes/radio buttons)

c.onkeyup:Boolean Default: true

在keyup时验证.

d.onclick:Boolean Default: true

在checkboxes 和 radio 点击时验证

e.focusInvalid:Boolean Default: true

提交表单后,未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点

f.focusCleanup:Boolean Default: false

如果是true那么当未通过验证的元素获得焦点时,移除错误提示。避免和focusInvalid一起用

8、异步验证

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",不能有其它输出。

9、添加自定义校验

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));
}, "请正确填写您的邮政编码");

1.要在additional-methods.js文件中添加或者在jquery.validate.js添加

建议一般写在additional-methods.js文件中

2.在messages_cn.js文件添加:isZipCode: "只能包括中文字、英文字母、数字和下划线",调用前要添加对additional-methods.js文件的引用。

10、radio和checkbox、select的验证

1.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"/>

2.checkbox的required表示必须选中

<input type="checkbox" class="checkbox" id="agree" name="agree" class="{required:true}" />
checkbox的minlength表示必须选中的最小个数,maxlength表示最大的选中个数,rangelength:[2,3]表示选中个数区间
<input type="checkbox" id="spam_email" value="email" name="spam[]" class="{required:true, minlength:2}" />
<input type="checkbox" id="spam_phone" value="phone" name="spam[]" />
<input type="checkbox" id="spam_mail" value="mail" name="spam[]" />

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

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Java vs JavaScript:開發人員的詳細比較Java vs JavaScript:開發人員的詳細比較May 16, 2025 am 12:01 AM

javaandjavascriptaredistinctlanguages:javaisusedforenterpriseandmobileapps,while javascriptifforInteractiveWebpages.1)JavaisComcompoppored,statieldinglationallyTypted,statilly tater astrunsonjvm.2)

JavaScript數據類型:瀏覽器和nodejs之間是否有區別?JavaScript數據類型:瀏覽器和nodejs之間是否有區別?May 14, 2025 am 12:15 AM

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScript評論:使用//和 / * * / * / * /JavaScript評論:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

北端:融合系統,解釋
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
4 週前By尊渡假赌尊渡假赌尊渡假赌
<🎜>掩蓋:探險33-如何獲得完美的色度催化劑
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用