功能強大的 jQuery 表單驗證插件,適用於日常的 E-mail、電話號碼、網址等驗證及 Ajax 驗證,除自身擁有豐富的驗證規則外,還可以添加自定義的驗證規則。 相容 IE 6+, Chrome, Firefox, Safari, Opera 10+ 版本: jQuery v1.7+ jQuer ...
功能強大的 jQuery 表單驗證插件,適用於日常的 E-mail、電話號碼、網址等驗證及 Ajax 驗證,除自身擁有豐富的驗證規則外,還可以添加自定義的驗證規則。
相容 IE 6+, Chrome, Firefox, Safari, Opera 10+
- 版本:
- jQuery v1.7+
- jQuery Validation Engine v2.6.2
- 相對 2.2.4 版本的一些區別:
- 部分參數功能發生變化;
- 輸入控制項可以不寫 id 屬性;
- 參數 onSuccess 和 onFailure 改為只在表單提交時觸發;
- 驗證規則 past[date](過去) 與 future[date](未來) 對調;
- API 介面驗證控制項均使用 "validate",移除 "validateField";
- API 介面隱藏提示均使用 "hide" 移除 "hidePrompt",保留 "hideAll"。
- Ciaoca 中文增強版:
- 根據中文字體優化樣式
- 增加多款驗證樣式
- 增加針對中文的驗證規則
- 移除無用的驗證規則示例
- 完善對 IE8 以下瀏覽器的支持(錯誤:對象不支持“indexOf”屬性或方法)
使用方法
載入 CSS 文件
- <link rel="stylesheet" href="css/validationEngine.jquery.css">
載入 JavaScript 文件
<script src="js/jquery.js"></script>
<script src="js/jquery.validationEngine-zh_CN.js"></script>
<script src="js/jquery.validationEngine.js"></script>
<!-- jquery.validationEngine-zh_CN.js 為配置文件,可根據需求自行調整或增加,也可以更換為其他語言配置文件 -->
給表單加上 ID
<!-- ID 須設置在 form 標簽中 -->
<form id="form_id" ...>
...
</form>
給控制項添加驗證類型
<!--
驗證規則預設使用 class 屬性
validate[required] 表示該項必須填寫
-->
<input type="text" class="validate[required]">
<input type="checkbox" class="validate[required]">
<select class="validate[required]"></select>;
<textarea class="validate[required]"></textarea>
設置驗證
// 直接調用
$('#form_id').validationEngine();
// 自定義參數調用
$('#form_id').validationEngine('attach', {
promptPosition: 'centerRight',
scroll: false
});
支持鏈式操作
- $('#form_id').validationEngine().css({border:'2px solid #000'});
線上實例
基礎示例 | |
綜合示例 | 實例預覽 |
擴展必填驗證 | 實例預覽 |
日期類型驗證 | 實例預覽 |
正則驗證 | 實例預覽 |
多種輸入控制項的驗證 | 實例預覽 |
單選框、覆選框的驗證 | 實例預覽 |
多表單驗證 | 實例預覽 |
DIV 容器 | 實例預覽 |
不再需要 ID 屬性 | 實例預覽 |
較好體驗的中文表單 | 實例預覽 |
參數配置 | |
全局設置 | 實例預覽 |
自動隱藏提示信息 | 實例預覽 |
自定義提示信息內容 | 實例預覽 |
提示信息的數量 | 實例預覽 |
只顯示一個提示信息 | 實例預覽 |
靜默處理 | 實例預覽 |
顯示溢出限制 | 實例預覽 |
驗證回調函數(阻斷提交) | 實例預覽 |
驗證回調函數(不阻斷提交) | 實例預覽 |
data 屬性 | |
自定義提示信息內容 | 實例預覽 |
提示層的位置 | 實例預覽 |
調整提示層的位置 | 實例預覽 |
API 介面 | |
顯示提示信息 | 實例預覽 |
改變提示層位置 | 實例預覽 |
動態綁定 | 實例預覽 |
自定義事件 | 實例預覽 |
Ajax 驗證 | |
AJAX PHP 驗證 | 實例預覽 |
AJAX PHP 驗證及提交 | 實例預覽 |
附錄 | |
[插件支持] selectbox | 實例預覽 |
[插件支持] datepicker | 實例預覽 |
[多語言] 日文 | 實例預覽 |
驗證類型
註:驗證規則均寫在 validate[] 中,如有多條規則,用英文逗號(,)分割。
例:validate[required,minSize[6],custom[onlyLetterNumber]]
名稱 | 示例 | 說明 |
---|---|---|
required | validate[required] | 表示必填項 |
groupRequired[string] | validate[groupRequired[grp]] | 在驗證組為 grp 的群組,中至少輸入或選擇一項 |
condRequired[string] | validate[condRequired[ids]] | 當 ids 的某個控制項不為空時,那麼該控制項也為必填項。
可以依賴多項,如:validate[condRequired[id1,id2] |
minSize[int] | validate[minSize[6]] | 最少輸入字元數 |
maxSize[int] | validate[maxSize[20]] | 最多輸入字元數 |
min[int] | validate[min[1]] | 最小值(該項為數字的最小值,註意與 minSize 的區分) |
max[int] | validate[max[9999]] | 最大值(該項為數字的最大值,註意與 maxSize 的區分) |
minCheckbox[int] | validate[minCheckbox[2]] | 最少選取的項目數(用於 Checkbox) |
maxCheckbox[int] | validate[maxCheckbox[2]] | 最多選取的項目數(用於 Checkbox) |
date[string] | validate[custom[date]] | 驗證日期,格式為 YYYY/MM/DD、YYYY/M/D、YYYY-MM-DD、YYYY-M-D |
dateFormat[string] | validate[custom[dateFormat]] | 驗證日期格式,格式為 YYYY/MM/DD、YYYY/M/D、YYYY-MM-DD、YYYY-M-D |
dateTimeFormat[string] | validate[custom[dateTimeFormat]] | 驗證日期及時間格式,格式為:YYYY/MM/DD hh:mm:ss AM|PM |
dateRange[string] | validate[dateRange[grp1]] | 驗證 grp1 的值是否符合日期範圍(開始日期與結束日期)
根據控制項的前後位置,如果當前控制項在 grp1 元素之後,輸入的日期不能是 grp1 日期的過去。 如果當前控制項在 grp1 控制項之前,輸入的日期不能是 grp1 日期的未來。 |
dateTimeRange[string] | validate[dateTimeRange[grp1]] | 驗證日期及時間範圍,增加了時間的對比,其他的和 dateRange 一樣。 |
past[string] | validate[past[2012/12/20]] | 日期必需是 date 或 date 的過去。date 格式可寫作 YYYY/MM/DD、YYYY/M/D、YYYY-MM-DD、YYYY-M-D 或 now |
future[string] | validate[future[now]] | 日期必須是 data 或 date 的未來。date 格式可寫作 YYYY/MM/DD、YYYY/M/D、YYYY-MM-DD、YYYY-M-D 或 now |
equals[string] | validate[equals[id]] | 當前控制項的值需與控制項 id 的值相同 |
number | validate[custom[number]] | 驗證數字 |
integer | validate[custom[integer]] | 驗證整數 |
phone | validate[custom[phone]] | 驗證電話號碼 |
validate[custom[email]] | 驗證 E-mail 地址 | |
url | validate[custom[url]] | 驗證 url 地址,需以 http://、https:// 或 ftp:// 開頭 |
ipv4 | validate[custom[ipv4]] | 驗證 ipv4 地址 |
onlyNumberSp | validate[custom[onlyNumberSp]] | 只接受填數字和空格 |
onlyLetterSp | validate[custom[onlyLetterSp]] | 只接受填英文字母、單引號(')和空格 |
onlyLetterNumber | validate[custom[onlyLetterNumber]] | 只接受數字和英文字母 |
custom[自定義規則] | validate[custom[ruleName]] |
自定義規則驗證
|
ajax | validate[ajax[ajaxName]] |
自定義 ajax 驗證
傳輸方式:get 傳遞參數:"fieldId=" + field.attr("id") + "&fieldValue=" + field.val() 額外參數:extraData 可以設置為字元串或對象,會在參數結尾追加 "&extraData" 返回數據格式:json 返回數據內容:[String,Boolean] 第一個值類型為 String,是接收到 fieldId 的值; 第二個值類型為 Boolean,驗證通過返回 true,不通過返回 false |
funcCall | validate[funcCall[functionName]] | 調用外部函數驗證
functionName(field, rules, i, options) |
Ciaoca 增強版增加驗證規則:
名稱 | 示例 | 說明 |
---|---|---|
chinese | validate[custom[chinese]] | 只接受中文漢字 |
chinaId | validate[custom[chinaId]] | 驗證身份證號碼(僅支持 18 位的身份證號碼) |
chinaIdLoose | validate[custom[chinaIdLoose]] | 驗證身份證號碼(支持 15 及 18 位的身份證號碼) |
chinaZip | validate[custom[chinaZip]] | 驗證郵政編碼 |
validate[custom[qq]] | 驗證 QQ 號碼 |
參數說明
名稱 | 預設值 | 說明 |
---|---|---|
validationEventTrigger | 'blur' | 觸發驗證的事件,支持事件可參考 jQuery 的事件說明。
PS:如果希望只在表單提交時驗證,可以設置為空。或者設置參數 binded:false |
binded | true | 是否綁定即時驗證 |
scroll | true | 屏幕自動滾動到第一個驗證不通過的位置。 |
focusFirstField | true | 驗證未通過時,是否給第一個不通過的控制項獲取焦點。 |
validateNonVisibleFields | false | 是否驗證不可見的元素(如 type="hidden" 的輸入框,或多個輸入控制項在選項卡切換中) |
showPrompts | true | 是否顯示提示信息 |
showArrow | true | 是否顯示提示信息的箭頭 |
promptPosition | 'topRight' |
提示信息的位置,可設置為:'topRight', 'topLeft', 'bottomRight', 'bottomLeft', 'centerRight', 'centerLeft', 'inline' 可設置更具體的位置,格式為:"方向: X偏移值, Y偏移值"。如: |
autoPositionUpdate | false | 是否自動調整提示層的位置 |
autoHidePrompt | false | 是否自動隱藏提示信息 |
autoHideDelay | 100000 | 自動隱藏提示信息的延遲時間 (ms) |
fadeDuration | 0.3 | 隱藏提示信息淡出的時間 |
addPromptClass | '' | 給提示信息增加 class
Ciaoca 增強版中,增加樣式如下: 'formError-noArrow' -- 無箭頭樣式 'formError-text' -- 純文字樣式 'formError-small' -- 精簡版樣式 'formError-white' -- 白色版樣式 可以疊加使用,如: |
custom_error_messages | {} | 自定義錯誤信息 |
maxErrorsPerField | false | 單個元素顯示錯誤提示的最大數量,值設為數值。預設 false 表示不限制。 |
showOneMessage | false | 是否只顯示一個提示信息 |
doNotShowAllErrosOnSubmit | false | 在提交表單時不顯示所有的錯誤信息(建議使用參數 showOneMessage 替代) |
addSuccessCssClassToField | '' | 驗證通過時,給控制項增加 class,當再次驗證失敗時,會去除。 |
addFailureCssClassToField | '' | 驗證失敗時,給控制項增加 class,當再次驗證通過時,會去除。 |
prettySelect | false | 是否使用了美化過的 select 選擇控制項 |
onFieldSuccess | false | 控制項驗證通過時的回調函數
function(field){} |
onFieldFailure | false | 控制項驗證失敗時的回調函數
function(field){} |
onSuccess | false | 在表單驗證結果為通過時的回調函數 |
onFailure | false | 在表單驗證結果為失敗時的回調函數
PS:onSuccess 和 onFailure |
onValidationComplete | false | 表單提交驗證完成時的回調函數 function(form, valid){},參數: form:表單元素 valid:驗證結果(ture or false) PS:使用此方法後,表單即使驗證通過也不會進行提交,交給定義的回調函數進行操作。 |
ajaxFormValidation | false | 是否使用 Ajax 提交表單(預設使用 GET 方式發送數據) |
ajaxFormValidationURL | false | 設置 Ajax 提交的 URL,預設使用 form 的 action 屬性 |
ajaxFormValidationMethod | 'get' | 設置 Ajax 提交時,發送數據的方式 |
onAjaxFormComplete | $.noop | 表單提交,Ajax 驗證完成後的行為(Function function(status, form, json, options){} |
onBeforeAjaxFormValidation | $.noop | 表單提交驗證通過後,Ajax 提交之前的回調函數 function(form, options){} |
ajaxValidCache | {} | |
isError | false | |
InvalidFields | [] | |
isOverflown | false | 表單是否在溢出滾動的元素內(即外部元素設置了 overflow:scroll)
PS:設置為 ture 後,提示內容的插入位置將更改為在驗證的控制項之前插入; 此時需要在控制項外層再套一個元素,並設置 class="inputContainer" |
overflownDIV | '' | 設置了溢出滾動的元素,格式為 jQuery 的選擇器。 |
usePrefix | '' | 使用 ID 首碼 |
useSuffix | '' | 使用 ID 尾碼 |
validateAttribute | 'class' | 存放驗證規則的屬性 |
bindMethod | 'bind' | |
inlineAjax | false |
HTML5 屬性
屬性名稱 | 說明 |
---|---|
data-validation-engine |
設置驗證規則 除了使用 class 設置驗證規則外,也可以使用該屬性來設置驗證規則。 |
data-validation-placeholder |
占位符 當位置為必填的控制項驗證時,值不能為空,也不能為占位符。 |
data-prompt-position |
自定義提示信息的位置,可設置為:"topRight", "topLeft", "bottomRight" "bottomLeft", "centerRight", "centerLeft", "inline" 可設置更具體的位置,格式為:"方向:X偏移值,Y偏移值"。如:data-prompt-position="bottomLeft:20,5" PS:偏移值可以為負數 |
data-prompt-target |
載入提示信息的容器,值為元素的 id 僅在 promptPosition 或 data-prompt-position 設為 "inline" 是有效。 |
錯誤信息屬性(實驗的)
屬性值與驗證規則相對應
<!-- 自定義錯誤信息屬性(實驗支持) -->
複製
<input type="email" name="email" id="email" data-validation-engine="validate[required,custom[email]]"
data-errormessage-value-missing="E-mail 不能為空"
data-errormessage-custom-error="E-mail 格式應為:[email protected]"
data-errormessage="通用的錯誤提示信息">
屬性名稱 | 對應驗證規則 |
---|---|
data-errormessage-value-missing |
|
data-errormessage-type-mismatch |
|
data-errormessage-pattern-mismatch |
|
data-errormessage-range-underflow |
|
data-errormessage-range-overflow |
|
data-errormessage-custom-error |
|
data-errormessage | 通用的錯誤提示信息 |
API 介面
名稱 | 示例 | 說明 |
---|---|---|
attach | $('#form_id').validationEngine('attach'); | 綁定表單驗證 |
detach | $('#form_id').validationEngine('detach'); | 移除表單驗證 |
validate | alert($('#id').validationEngine('validate')); | 驗證控制項或表單,返回結果 true 或 false |
showPrompt | $('#id').validationEngine('showPrompt','提示內容','load'); | 在該元素上創建一個提示,3 種狀態:'pass', 'error', 'load' |
hide | $('#id').validationEngine('hide'); | 隱藏改元素及元素內的提示 |
hideAll | $('#id').validationEngine('hideAll'); | 隱藏頁面上的所有提示 |
updatePromptsPosition | $('#form_id').validationEngine('updatePromptsPosition') | 更新提示層的位置 |
自定義事件
插件增加的自定義事件
名稱 | 示例 | 說明 |
---|---|---|
jqv.form.validating | $('#form_id').bind('jqv.form.validating', function(event){}); | 表單驗證時 |
jqv.form.result | $('#form_id').bind('jqv.form.result', function(event, errorFound){}); | 表單驗證完成。返回參數說明:
errorFound:表單驗證不通過(true 或 false) |
jqv.field.result | $('#field_id').bind('jqv.field.result', function(event, field, isError, promptText){}); | 單個控制項驗證完成。返回參數說明:
field:控制項對象 isError:控制項驗證不通過(true 或 false) promptText:提示信息 |
下載