讀古今文學網 > 鋒利的jQuery(第2版) > 附錄F 插件API >

附錄F 插件API

F.1 Validation插件API

Validation插件有兩個經常被用到的選項,分別是方法(method)和規則(rule)。

(1)方法。驗證方法就是通過執行驗證邏輯判斷一個元素是否合法。例如email方法就是檢查當前文本格式是否是正確的E-mail格式。讀者能很方便地利用Validation插件提供的方法來完成驗證。另外,讀者也可以自定義方法。

(2)規則。驗證規則將元素和元素的驗證方法關聯起來,例如驗證一個需要E-mail格式和必填的屬性name為email的元素,可以定義該元素的規則如下:

 插件方法如表F-1所示。

表F-1 插件方法

名 稱返回類型說 明validate(options)Validator驗證被選擇的formvalidBoolean檢查被選擇的from或者被選擇的所有元素是否有效rulesOptions為第1個被選擇的元素返回驗證規則rules(\"add\", rules)Options增加指定的驗證規則並為第1個匹配元素返回所有的規則rules(\"remove\", rules)Options移除指定的驗證規則並為第1個匹配元素返回所有的規則removeAttrs(attributes)Options從第1個匹配元素中移除指定的屬性並返回

 內置驗證規則如表F-2所示。

表F-2 內置驗證規則

名 稱返回類型說 明requiredBoolean使元素總是必須的required(dependency-expression)Boolean根據給定的表達式結果,判斷元素是否是必須的required(dependency-callback)Boolean根據給定的回調函數的返回值,判斷元素是否是必須的remote(url)Boolean使用請求資源檢查元素的有效性minlength(length)Boolean要求元素滿足給定的最小長度規則maxlength(length)Boolean要求元素滿足給定的最大長度規則rangelength(range)Boolean要求元素滿足給定的長度範圍規則min(value)Boolean要求元素滿足給定的最小值規則max(value)Boolean要求元素滿足給定的最大值規則range(range)Boolean要求元素滿足給定值的範圍規則emailBoolean要求元素滿足E-mail格式規則urlBoolean要求元素滿足url格式規則dateBoolean要求元素滿足date格式規則dateISOBoolean要求元素滿足ISO date格式規則dateDEBoolean要求元素滿足german date格式規則numberBoolean要求元素滿足帶小數點的數字格式規則numberDEBoolean要求元素滿足german format並帶小數點的數字格式規則digitsBoolean要求元素滿足整型格式規則creditcardBoolean要求元素滿足信用卡號碼格式規則accept(extension)Boolean要求元素滿足特定的文件格式equalTo(other)Boolean要求元素等於另外一個元素phoneUSBoolean要求元素滿足美國電話號碼的格式規則

 Validator

Validation驗證會返回一個Validator對象,validator對象可以幫助用戶觸發validation程序或者

改變form的內容。validator對像更多的方法如表F-3所示。

表F-3 validator對象的方法

名 稱返回類型說 明formBoolean驗證form,如果驗證合法則返回true,否則返回falseelement(element)Boolean驗證一個元素,如果驗證合法則返回true,否則返回falseresetFormundefined復位被驗證的formshowErrors(errors)undefined顯不指定的提示信息numberOfInvalidsInteger返回無效字段的個數

validator對像中的靜態方法如表F-4所示。

表F-4 validator對像中的靜態方法

名 稱返回類型說 明setDefaults(defaults)undefined修改validation初始的設置addMethod(name, method, message)undefined增加一個新的validation方法。該方法必須由name(必須是一 個合法的JavaScript標識符)、一個基於函數的JavaScript和 一個默認的字符串提示信息組成addClassRules(name, rules)undefined增加一個驗證規則,它代替了「rules」中的驗證addClassRules(rules)undefined增加多個驗證規則

 實用項

表F-5 實用項

名 稱返回類型說 明jQuery.validator.format(template, argument, argumentN…)String使用參數來替換{n}佔位符

 普通選擇器

表F-6 普通選擇器

名 稱返回類型說 明:blankArray<Element>匹配值為空的元素:filledArray<Element>匹配值不為空的元素:uncheckedArray<Element>匹配所有沒被選擇的元素

F.2 Form插件API

(1)Form插件API

Form插件擁有很多方法,這些方法可以使用戶很容易地管理表單數據和提交表單。

 ajaxForm

增加所需要的事件監聽器,為Ajax提交表單做好準備。AjaxForm方法並沒有提交表單,而是在$(document).ready方法中,使用ajaxForm方法來為Ajax提交表單做好準備。ajaxForm方法可以接受0個或1個參數。單個的參數既可以是一個回調函數,也可以是一個Options對象。此方法可以進行鏈式操作。

例子:

 ajaxSubmit

立即通過Ajax方式提交表單。在大多數情況下,都是調用ajaxSubmit方法來響應用戶的提交表單操作。AjaxSubmit方法可以接受0個或1個參數。單個的參數既可以是一個回調函數,也可以是一個Options對象。此方法可以進行鏈式操作。

例子:

 formSerialize

該方法將表單中所有的元素串行化(序列化)為一個字符串。formSerialize方法會返回一個格式化好的字符串,格式如下:

因為返回的是字符串,而不是jQuery對象,所以該方法不能進行鏈式操作。

例子:

 fieldSerialize

fieldSerialize方法將表單的字段元素串行化(序列化)成一個字符串。當用戶只需要串行化表單的一部分時就可以用到該方法了。fieldSerialize方法會返回一個格式化後的字符串,格式如下:

因為返回的是字符串,所以該方法不可以進行鏈式操作。

例子:

 fieldValue

fieldValue方法把匹配元素的值插入到數組中,然後返回這個數組。從0.91版本起,該方法總是以數組的形式返回數據,如果元素值被判定無效,則數組為空,否則數組將包含一個或多個元素值。fieldValueO方法返回一個數組,因此不可以進行鏈式操作。

例子:

 resetForm

該方法通過調用表單元素原有的DOM方法重置表單到初始狀態。resetForm方法可以進行鏈式操作。

例子:

 clearForm

clearForm方法用來清空表單中的元素。該方法將所有的文本框(text)、密碼框(password)和文本域(textarea)元素置空,清除下拉框(select)元素的選定以及將所有的單選按鈕(radio)和多選按鈕(checkbox)重置為非選定狀態。clearForm方法可以進行鏈式操作。

例子:

 clearFields

clearFields方法用來清空字段元素。當用戶需要清空一部分表單元素時就會用到該方法。clearFields方法可以進行鏈式操作。

例子:

(2)ajaxForm and ajaxSubmit的Options對像

ajaxForm方法和ajaxSubmit方法支持許多選項,這些選項都可以通過Options對像來設置。Options對象是一個簡單的JavaScript對象,包含了如下屬性與值的集合。

 target

指明頁面中根據服務器響應進行更新的元素。這個值可能是一個特殊的jQuery選擇器字符串、一個jQuery對像或者一個DOM元素。

默認值:null。

 url

將表單元素提交到指定的url中。

默認值:表單action屬性的值。

 type

指定提交表單數據的方法(method): GET或POST。

默認值:表單method屬性的值(如果沒有找到,則為GET)。

 beforeSubmit

表單提交前的回調函數。beforeSubmit回調函數被用來運行預提交邏輯或者校驗表單數據。假如beforeSubmit回調函數返回false,則表單將不會被提交。beforeSubmit回調函數有3個參數:數組形式的表單數據、jQuery表單對像和傳遞給ajaxForm方法或ajaxSubmit方法的Options對象。表單數據數組遵循以下數據格式(json類型)。

默認值:null。

 success

表單成功提交後調用的回調函數。假如success回調函數被指定,將在服務器返迴響應後被調用。success函數可以傳回responseText或者responseXML的值(決定值的數據類型是dataType選項)

默認值:null。

 dataType

期望的服務器響應的數據類型,可以是null、xml、script或者json。dataType提供了指定的方法以便控制服務器的響應。這個指定的方法將被直接地反映到jQuery.httpData方法中。dataType支持以下格式。

 xml。如果dataType被指定為xml,服務器返回內容將被作為XML來對待。同時,如果「success」回調函數被指定,responseXML的值將會傳遞給回調函數。

 json。如果dataType被指定為json,服務器返回內容將被執行,如果「success」回調函數

被指定,返回的內容將會傳遞給回調函數。

 script。如果dataType被指定為script,服務器返回內容將被放在全局環境中執行。

默認值:null。

 semantic

是否需要定義為嚴格的語義格式。注意,普通的表單序列化要遵循的語義不能包括type屬性為image的input元素。假如服務器有嚴格的語義要求,而表單也至少包含一個type=\"image\"元素的時候,那麼必須設置semantic選項為true。

默認值:false。

 resetForm

表單是否在提交成功後被重置。

默認值:null。

 clearForm

表單是否在提交成功後被清空。

默認值:null。

 iframe

表單是否總是將服務器響應指向到一個iframe。iframe在文件上傳時會很有用。

默認值:false。

 data

包含額外數據的對象通過form形式提交。

 error

錯誤時的回調函數。

 beforeSerialize

回調函數被調用前被序列化。它可以在調用之前檢索其值的形式。它帶有兩個參數:form對像和ajaxForm/ ajaxSubmit傳遞過來的options對象。

默認值:null。

 replaceTarget

可選,與target選項一起使用。如果想將目標元素一起替換掉,請設為true,如果只想替換目標元素的內容,則設為false。

默認值:false。在v2.43後增加。

 iframeSrc

字符串值,當/如果使用iframe時作為iframe的src屬性。

默認值:about:blank

網頁使用https協議時默認值為:javascript:false

 forceSync

布爾值,當上傳文件(或使用iframe選項)時,提交表單前為了消除短延遲,設置為true。延遲的使用是為了讓瀏覽器渲染DOM更新前執行原有的表單submit。這時顯示一條信息告知用戶,如:「請稍等…」,會改善可用性。

默認值:false。在v2.38後增加。

 uploadProgress

上傳進度信息(如果瀏覽器支持)回調函數。回調傳遞以下參數:

1)event:瀏覽器事件

2)position:位置(整數)

3)total:總長度(整數)

4)percentComplete:完成度(整數)

默認值:null

 iframeTarget

使用iframe元素作為響應文件上傳目標。默認情況下,該插件將創建一個臨時的iframe元素來捕捉上傳文件時的反應。此選項允許您使用現有的iframe,如果你想。使用此選項時,插件對來自服務器的響應不作任何處理。

默認值:null。在v2.76後增加。

(3)Form插件實例

注意,利用此Options對象,可以將值傳給jQuery的$.ajax方法。假如用戶熟悉$.ajax方法提供的options對象,那麼可以利用它們來將Options對像傳遞給ajaxForm方法和ajaxSubmit方法。

F.3 SimpleModal插件API

API的官方網站地址為:http://www.ericmmartin.com/projects/simplemodal/

表F-7 SimpleModal插件的API

名 稱功能說明appendTo [String:\'body\']將彈出框添加到的父容器,參數為css選擇器focus [Boolean:true]把焦點保持在模態窗口上opacity [Number:50]設置overlay p的不透明度,1-100overlayId [String:\'simplemodal-overlay\']遮罩層IDoverlayCss [Object: {}]定義遮罩層樣式containerId [String:\'simplemodal-container\']彈出模態窗口容器IDcontainerCss [Object: {}]彈出模態窗口容器樣式dataId [String:\'simplemodal-data\']內容層的IDdataCss [Object:{}]內容層的樣式minHeight [Number:null]container的最小高度minWidth [Number:null]/container的最小寬度maxHeight [Number:null]container的最大高度maxWidth [Number:null]container的最大寬度autoResize [Boolean:false]是否自適應大小。當window調整大小時自動調整container的大小,使用時需 小心,因為它可能會發生不可預知的效果autoPosition [Boolean:true]是否自動定位zIndex [Number: 1000]模態窗口的z-indexclose [Boolean:true]如果為true,那麼closeHTML, escClose, overClose將被使用,反之則不使用closeHTML [String:\"]自定義關閉按鈕closeClass [String:\'simplemodal-close\']自定義關閉按鈕的樣式escClose [Boolean:true]是否允許按ESC關閉模態窗口overlayClose [Boolean:false]是否允許點擊overlay(遮罩層)關閉模態窗口position [Array:null]自定義彈出窗體位置,數組[top, left]persist [Boolean:false]是否跨模態調用的數據。僅用於現有的DOM元素。如果為true,數據在跨模 態調用時保持不變,如果為false,數據將被恢復到其原始狀態modal [Boolean:true]如果為true,用戶將無法與模態窗口下面的內容進行交互。如果為false,遮罩 層將被禁用,允許用戶與下面的內容交互onOpen [Function:null]模態窗口打開時候的回調函數onShow [Function:null]模態窗口顯示時候的回調函數onClose [Function:null]模態窗口關閉時候的回調函數

F.4 Cookie插件API

API的官方網站地址為:https://github.com/carhartl/jquery-cookie

 寫入Cookie。

注意:「the_cookie」為待寫入的Cookie名,「the_value」為待寫入的值。

 讀取Cookie。

注意:「the_cookie」為待讀取的Cookie名。

 刪除Cookie。

注意:「the_cookie」為Cookie名,設置為null即刪除此Cookie。必須使用與之前設置時相同的路徑(path)和域名(domain),才可以正確刪除Cookie。

 其他可選參數。

注意: expires:(Number|Date)有效期。可以設置一個整數作為有效期(單位:天),也可以直接設置一個日期對像作為Cookie的過期日期。如果指定日期為負數,例如已經過去的日子,那麼此Cookie將被刪除;如果不設置或者設置為null,那麼此Cookie將被當作Session Cookie處理,並且在瀏覽器關閉後刪除。

 path:(String)cookie的路徑屬性。默認是創建該Cookie的頁面路徑。

 domain:(String)cookie的域名屬性。默認是創建該Cookie的頁面域名。

 secure:(Boolean)如果設為true,那麼此Cookie的傳輸會要求一個安全協議,例如HTTPS。