欧美精品在线一区二区三区_亚洲女同精品视频_日韩一区免费_国产欧美久久久精品免费_国产这里只有精品_僵尸再翻生在线观看_久久99精品国产一区二区三区_亚洲免费一区二区_女教师淫辱の教室蜜臀av软件_中文字幕国产一区二区

從零開始學(xué)習(xí)jQuery (十一) 實(shí)戰(zhàn)表單驗證與自動完成提示插件

轉(zhuǎn)載藍(lán)藍(lán)設(shè)計(   www.ocunn.cn  )是一家專注而深入的設(shè)計機(jī)構(gòu) ,為期望卓越的國內(nèi)外企業(yè)提供有效的   BS界面設(shè)計 、 cs界面設(shè)計 、  ipad界面設(shè)計   、  包裝設(shè)計 、  圖標(biāo)定制 、  用戶體驗 、交互設(shè)計、   網(wǎng)站建設(shè) 平面設(shè)計服務(wù)

來源:http://www.cnblogs.com/zhangziqiu/archive/2009/05/08/jQuery-Learn-11.html

如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中,   請點(diǎn)這里

一.摘要

本系列文章將帶您進(jìn)入jQuery的精彩世界, 其中有很多作者具體的使用經(jīng)驗和解決方案,  即使你會使用jQuery也能在閱讀中發(fā)現(xiàn)些許秘籍.

本文是介紹兩個最常用的jQuery插件. 分別用于表單驗證和自動完成提示(類似google suggest).

 

二.前言

研究別人的作品真是一件花時間而且痛苦的過程. 當(dāng)然也和本人英文不好有關(guān). 總覺得控件作者寫了很多文檔但是都不夠系統(tǒng), 需要深入研究很多的實(shí)例后才能了解作者的思路.所以學(xué)習(xí)和研究一個插件需要很高成本, 如果發(fā)現(xiàn)了Bug并修復(fù)需要的成本也是未知數(shù)(本次我花了較少的時間解決了自動完成提示插件的一個中文bug, 但是如果復(fù)雜的bug就不會這么簡單了.).

對于簡單應(yīng)用我首先推薦上文中的jQuery UI. 但是jQuery UI解決的問題有限. 使用jQuery插件是我們最后的一個好辦法---還算是好辦法, 起碼比自己開發(fā)要好吧?

很多jQuery的插件編碼異常優(yōu)美, 看一看藝龍首頁現(xiàn)在的城市輸入框控件, 除了需要為輸入框手工添加很多很多屬性(onkeyup, onkeydown等等), 而且還不夠通用, 占用服務(wù)器資源和網(wǎng)絡(luò)資源.但是當(dāng)初也是花費(fèi)了很久的時間完成的作品.

站在巨人的肩膀上, 讓我感覺寫腳本和寫設(shè)計C#程序一樣, 都有高度和深度可以挖掘. 除了使用作者開發(fā)好的功能, 還可以學(xué)習(xí)如何開發(fā)和封裝javascript控件. 看過優(yōu)秀的jQuery插件作者的代碼和設(shè)計思想后, 常常自嘆設(shè)計水平差距居然如此之大, 增加自認(rèn)為腳本高手, 比較過后就是C#程序員和架構(gòu)師之間的差距.

希望大家通過本章節(jié)介紹的兩個插件, 除了學(xué)會如何使用,  還能夠略微領(lǐng)悟到如何封裝和設(shè)計javascript控件.

 

三.表單驗證插件 validate

在提交表單前常要對用戶輸入進(jìn)行校驗.ASP.NET的驗證控件就是用于此目的, 可以同時進(jìn)行客戶端和服務(wù)器端驗證. 但是驗證控件并沒有被所有項目采用. 而且在MVC項目中經(jīng)常使用自己的客戶端驗證框架.

在比較了若干表單驗證插件后, 決定采用validate插件. 因為其使用簡單并且靈活.

插件首頁:

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

插件文檔:

http://docs.jquery.com/Plugins/Validation

配置說明:

http://docs.jquery.com/Plugins/Validation/validate#options

1.應(yīng)用實(shí)例

實(shí)例效果:

image

實(shí)例代碼:

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server">     <title>jQuery PlugIn - 表單驗證插件實(shí)例 Validate </title>     <!--black-tie,blitzer,blitzer,dot-luv,excite-bike,hot-sneaks,humanity,mint-choc,redmond,smoothness,south-street,start,swanky-purse,trontastic,ui-darkness,ui-lightness,vader-->     <link rel="stylesheet" type="text/css" href="<%=WebConfig.ResourceServer +"/JsLib/jquery/themes/redmond/style.css"%>" />     <script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/jquery-min-lastest.js"></script>     <script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/ui/jquery-ui-all-min-lastest.js"></script>
    <script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/plugin/jquery.validate/jquery.validate.min.js"></script>
    <script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/plugin/jquery.validate/localization/messages_cn.js"></script>

    <% if (false)
       {%><script src="~/js/jquery-vsdoc-lastest.js" type="text/javascript"></script>
    <% }%>
    <script type="text/javascript">
        /*========== 必須放在頭部加載的語句塊. 盡量避免使用 ==========*/     </script>     <style type="text/css">
        body
        {
            font-size:12px;
        }
        /* form中顯示文字的label */         .slabel
        {
            width:100px;
            display: -moz-inline-box;
            line-height: 1.8;
            display: inline-block;
            text-align:right;
        }
        /* 出錯樣式 */         input.error, textarea.error
        {
            border: solid 1px #CD0A0A;
        }
        label.error
        {
            color:#CD0A0A;
            margin-left:5px;
        }
        /* 深紅色文字 */         .textred
        {
            color:#CD0A0A;
        }
    </style>
</head>
<body>
    <form id="commentForm" method="get" action="">
    <fieldset style="width:500px;"><legend>表單驗證</legend>
        <p><label for="cname" class="slabel"><em class="textred">*</em> 姓名:</label>
            <input id="cname" name="name" size="25" class="required" minlength="2" />
        </p>
        <p><label for="cemail" class="slabel"><em class="textred">*</em> E-Mail:</label>
            <input id="cemail" name="email" size="25"/>
        </p>
        <p><label for="curl" class="slabel">網(wǎng)址:</label>            
            <input id="curl" name="url" size="25" class="url" value="" />
        </p>
        <p><label for="ccomment" class="slabel"><em class="textred">*</em> 內(nèi)容:</label>
            <textarea rows="2" id="ccomment" name="comment" cols="20" class="required" style="height:80px;"></textarea>
        </p>
        <p style="text-align:center;">
            <input class="submit" type="submit" value="提交" />
        </p>
    </fieldset>
    </form>
    <script type="text/javascript">
       /*==========用戶自定義方法==========*/        /*==========事件綁定==========*/        $(function()
       {

       });

       /*==========加載時執(zhí)行的語句==========*/        $(function()
       {
           $("#commentForm").validate(
           {
               errorClass: "error",
               submitHandler: function(form)
               {
                   //如果想提交表單, 需要使用form.submit()而不要使用$(form).submit()                    alert("submitted!");
               },
               rules: {
                   //為name為email的控件添加兩個驗證方法:required()和email()                    email: { required: true, email: true }
               },
               messages: {
                   //為name為email的控件的required()和email()驗證方法設(shè)置驗證失敗的消息內(nèi)容                    email: {required:"需要輸入電子郵箱", email:"電子郵箱格式不正確"}
               }

           });
       });        
    </script> </body> </html>

 

2. 實(shí)例講解

(1) 驗證方法

驗證方法是驗證某一個控件是否滿足某些規(guī)則的方法, 返回一個boolean值. 比如email( ) 方法驗證內(nèi)容是否符合email格式, 符合則返回true. 下面是類庫中email方法的源代碼:

        // http://docs.jquery.com/Plugins/Validation/Methods/email         email: function(value, element) {
            // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/             return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
        },

我們在:

http://docs.jquery.com/Plugins/Validation

中的 List of built-in Validation methods 一節(jié)中列出了所有內(nèi)置的驗證方法. 同時插件還提供了additional-methods.js 文件, 里面包含了更多的驗證方法, 引入后既可啟用.

(2) 驗證消息

驗證消息就是驗證方法失敗后顯示的文字內(nèi)容. 驗證消息一定關(guān)聯(lián)在某一個驗證方法上, 并且全局的驗證消息保存在jQuery.validator.messages 屬性中.

默認(rèn)的validate類庫自帶英文驗證消息:

    messages: {
        required: "This field is required.",    
        //...     });


上面說明當(dāng)required驗證方法驗證失敗是, 顯示"This field is required."這條消息.

在下載文件的localization文件夾中, 包含了各國語言的基本驗證消息, 如同本實(shí)例一樣引入不同的語言文件即可實(shí)現(xiàn)語言切換:

<script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/plugin/jquery.validate/localization/messages_cn.js"></script>


 

語言文件的內(nèi)容舉例:

jQuery.extend(jQuery.validator.messages, {
        required: "必選字段",
        //... });

 

現(xiàn)在必填項的問題提示就變成了中文.

除了全局默認(rèn)的驗證消息, 也可以為某一個表單元素設(shè)置特有的驗證消息, 比如本文實(shí)例中, 為email元素設(shè)置了特有的驗證消息:

               messages: {
                   //為name為email的控件的required()和email()驗證方法設(shè)置驗證失敗的消息內(nèi)容                    email: {required:"需要輸入電子郵箱", email:"電子郵箱格式不正確"}

 

options的messages屬性可以針對某一個表單元素設(shè)置驗證消息, 第一個email表示email元素, 值是一個集合, required就表示required驗證函數(shù), 第二個email表示是email驗證函數(shù).

(3)驗證規(guī)則

驗證規(guī)則就是這樣的語意語句: 在元素A上, 使用 驗證方法A 和 驗證方法B 進(jìn)行驗證.

驗證規(guī)則將元素與驗證方法關(guān)聯(lián)起來, 因為驗證方法同時也關(guān)聯(lián)了驗證消息, 所以元素與消息也關(guān)聯(lián)了起來.

為一個元素添加驗證規(guī)則有多種方式.

本實(shí)例的"姓名"元素使用了CSS樣式規(guī)則和元素屬性規(guī)則:

<input id="cname" name="name" size="25" class="required" minlength="2" />

class元素屬性設(shè)置元素的CSS樣式類, 因為樣式類中添加了required類,  所以會和required()驗證函數(shù)關(guān)聯(lián). 這種規(guī)則叫做CSS樣式規(guī)則.

minlength元素屬性也會自動和minlength()驗證函數(shù)關(guān)聯(lián), 這種規(guī)則叫做元素屬性規(guī)則.

另外還可以通過編程的方式進(jìn)行關(guān)聯(lián):

               rules: {
                   //為name為email的控件添加兩個驗證方法:required()和email()                    email: { required: true, email: true }
               },

上面的語句表名為email表單對象添加了required()和email()驗證函數(shù).

(4)  表單提交

默認(rèn)情況下, 當(dāng)驗證函數(shù)失敗時表單不會提交.

但是可以通過添加class="cancel"的方式讓提交按鈕跳過驗證:

<input type="submit" class="cancel" name="cancel" value="Cancel" />


當(dāng)表單提交時, 會觸發(fā)options中submitHandler屬性設(shè)置的函數(shù):

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

此函數(shù)的簽名同上.  我們可以在這個函數(shù)中,  編寫在表單提交前需要處理的業(yè)務(wù)邏輯.

需要注意當(dāng)最后以編程的方式提交表單時, 一定不要使用jQuery對象的submit()方法, 因為此方法會觸發(fā)表單驗證,并且再次調(diào)用submitHandler設(shè)置的函數(shù), 會導(dǎo)致遞歸調(diào)用.

此函數(shù)的參數(shù)form就是表單對象, 用途就是不進(jìn)行驗證提交表單:form.submit()

(5) DEBUG模式

在開發(fā)階段我們通常不希望表單被真正提交,  雖然可以通過本實(shí)例中重寫submitHandler函數(shù)來實(shí)現(xiàn), 但是還有更好的方式, 我們可以在submitHandler函數(shù)完成正式提交的邏輯, 然后通過設(shè)置options的debug屬性, 來達(dá)到即使驗證通過也不會提交表單的目的:

$(".selector").validate({
   debug: true })

(6) 多表單驗證

有時會在一個頁面上出現(xiàn)多個Form, 因為validate控件是針對form對象進(jìn)行包裝的, 所以我們可以控制哪些form對象需要驗證.

同時為了方便一次設(shè)置頁面上所有的應(yīng)用了validate控件的form對象,  提供了 jQuery.validator.setDefaults 函數(shù)讓我們可以一次設(shè)置所有的默認(rèn)值:

jQuery.validator.setDefaults({ 
    debug: true 
});

 

 

四.自動完成插件 autocomplete

autocomplete插件能幫助我們實(shí)現(xiàn)類似于Google Suggest的效果:

image

插件首頁:

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

插件文檔:

http://docs.jquery.com/Plugins/Autocomplete

配置說明:

http://docs.jquery.com/Plugins/Autocomplete/autocomplete#toptions

1.應(yīng)用實(shí)例

本實(shí)例演示的是使用autocomplete完成對輸入城市的自動提示效果,如圖:

image

實(shí)例代碼:

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server">     <title>jQuery PlugIn - 自動完成插件實(shí)例 AutoComplete </title>     <!--black-tie,blitzer,blitzer,dot-luv,excite-bike,hot-sneaks,humanity,mint-choc,redmond,smoothness,south-street,start,swanky-purse,trontastic,ui-darkness,ui-lightness,vader-->     <link rel="stylesheet" type="text/css" href="<%=WebConfig.ResourceServer +"/JsLib/jquery/themes/redmond/style.css"%>" />     <link rel="stylesheet" type="text/css" href="<%=WebConfig.ResourceServer +"/JsLib/jquery/plugin/jquery.autocomplete/jquery.autocomplete.css"%>" />     <script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/jquery-min-lastest.js"></script>     <script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/ui/jquery-ui-all-min-lastest.js"></script>
    <script type="text/javascript" src="<% =WebConfig.ResourceServer %>/JsLib/jquery/plugin/jquery.autocomplete/jquery.autocomplete.min.js"></script>
    <% if (false)
       {%><script src="~/js/jquery-vsdoc-lastest.js" type="text/javascript"></script>
    <% }%>
    <script type="text/javascript">
        /*========== 必須放在頭部加載的語句塊. 盡量避免使用 ==========*/     </script>     <style type="text/css">
        body
        {
            font-size: 12px;
        }

        .formLabel{float: left; width: 150px; text-align:right;}
        .formInput{float: left;}
    </style>
</head>
<body>
    <!-- Demo. 應(yīng)用AutoComplete插件 -->
    <div class="ui-widget ui-widget-content ui-corner-all" style="width: 700px; padding: 5px;">
        <h3>
            Demo. 應(yīng)用AutoComplete插件 </h3>
        <br style="clear: both" />
        <div class="formLabel">
            <label for="inputCityName">請輸入城市拼音和漢字:</label>
        </div>
        <div class="formInput">
            <input id="inputCityName" name="inputCityName" type="text" />
        </div>
        <br style="clear:both" />
        <br style="clear: both" />
        <div class="formLabel">
            <label for="inputCityName">城市ID:</label></div>
        <div class="formInput">
            <input id="inputCityId" name="inputCityId" type="text" /></div>
        <br style="clear: both" />
        <br style="clear: both" />
    </div>
    <script type="text/javascript">
        /*==========用戶自定義方法==========*/         //城市數(shù)據(jù)         var cityList;
        //autocomplete選項         var options = {
            minChars: 1,
            max: 500,
            width: 250,
            matchContains: true,
            formatItem: function(row, i, max)
            {
                return i + "/" + max + ": \"" + row.CityNameEn + "\" [" + row.CityName + "]";
            },
            formatMatch: function(row, i, max)
            {
                return row.CityNameEn + " " + row.CityName;
            },
            formatResult: function(row)
            {
                return row.CityName;
            }            
        };
        //autocomplete初始化函數(shù)         function initAutoComplete(data)
        {
            cityList = data;
            $("#inputCityName").autocomplete(cityList, options);
            $("#inputCityName").result(function(event, data, formatted)
            {
                $("#inputCityId").val(data.ElongCityId);
            });                    
        }

        /*==========事件綁定==========*/         $(function()
        {
        });

        /*==========加載時執(zhí)行的語句==========*/         $(function()
        {
            //加載城市數(shù)據(jù), 并在回調(diào)函數(shù)中用返回的數(shù)據(jù)初始化autocomplete             $.getJSON("cityinfo.htm", null, initAutoComplete)  
        });        
    </script> </body> </html>

 

2. 實(shí)例講解

(1)準(zhǔn)備數(shù)據(jù)源

首先要準(zhǔn)備實(shí)現(xiàn)自動建議的數(shù)據(jù)源. 本實(shí)例是通過發(fā)送Ajax請求獲取JSON對象. autocomplete()方法支持兩個參數(shù), 第一個是data, 第二個是options.

其中data參數(shù)可以使本實(shí)例中的一個數(shù)據(jù)變量, 也可以是一個url. 如果是url則會每次都調(diào)用Ajax請求獲取數(shù)據(jù).

為了效率我傾向于在數(shù)據(jù)量允許的情況下, 在頁面加載后使用Ajax獲取全部的數(shù)據(jù), 然后使用傳遞數(shù)據(jù)變量給autocomplete組件. 如實(shí)例中所示. 除非數(shù)據(jù)特別巨大無法再客戶端加載,  則只能每次都使用發(fā)送Ajax請求從服務(wù)器端獲取部分?jǐn)?shù)據(jù). 但是這會對服務(wù)器造成負(fù)擔(dān).

(2) 設(shè)置關(guān)鍵函數(shù)

雖然options是可選項, 但是對于我們的數(shù)據(jù)源cityList是一個多屬性對象, 所以必須設(shè)置下面幾個關(guān)鍵的配置項后才能夠使用:

formatItem

對匹配的每一行數(shù)據(jù)使用此函數(shù)格式化, 返回值是顯示給用戶的數(shù)據(jù)內(nèi)容.

函數(shù)簽名:

function(row, rowNum, rowCount, searchItem)

參數(shù)說明:

row: 當(dāng)前行. the results row,

rowNum: 當(dāng)前行號,從1開始.(注意不是索引,索引從0開始) the position of the row in the list of results (starting at 1),

rowCount: 總的行號 the number of items in the list of results

searchItem: 查詢使用的數(shù)據(jù), 即formatMatch函數(shù)返回的數(shù)據(jù)格式的內(nèi)容. 我們在formatMatch函數(shù)中會設(shè)置程序內(nèi)部搜索時使用的數(shù)據(jù)格式,這個格式和給用戶展示的數(shù)據(jù)是不同的.

formatMatch

對每一行數(shù)據(jù)使用此函數(shù)格式化需要查詢的數(shù)據(jù)格式. 返回值是給內(nèi)部搜索算法使用的. 實(shí)例中用戶看到的匹配結(jié)果是formatItem中設(shè)置的格式, 但是程序內(nèi)部其實(shí)只搜索城市的英文和中文名稱, 搜索數(shù)據(jù)在formatMatch中定義:

return row.CityNameEn + " " + row.CityName;


函數(shù)簽名:

function(row, rowNum, rowCount,)

參數(shù)說明同上

formatResult

此函數(shù)是用戶選中后返回的數(shù)據(jù)格式. 比如實(shí)例中只返回城市名給input控件:

return row.CityName;


函數(shù)簽名:

function(row, rowNum, rowCount,)

參數(shù)說明同上

(3) 為控件添加Result事件函數(shù)

上面3個函數(shù)無法實(shí)現(xiàn)這類要求: 雖然只返回城市名稱, 但是查詢時使用城市ID, 選中一個城市后需要將城市ID存儲在一個隱藏域中.

所以autocomplete控件提供了result事件函數(shù), 此事件會在用戶選中某一項后觸發(fā):

            $("#inputCityName").result(function(event, data, formatted)
            {
                $("#inputCityId").val(data.ElongCityId);
            }); 

函數(shù)簽名:

function(event, data, formatted)

參數(shù)列表:

Result事件會為綁定的事件處理函數(shù)傳遞三個參數(shù):

event: 事件對象. event.type為result.

data: 選中的數(shù)據(jù)行.

formatted:   雖然官方的解釋應(yīng)該是formatResult函數(shù)返回的值, 但是實(shí)驗結(jié)果是formatMatch返回的值. 在本實(shí)例為: "Beijing  北京".

(4) 匹配中文

當(dāng)前版本的autocomplete控件對中文搜索存在Bug, 原因是其搜索事件綁定在keydown事件上, 當(dāng)使用中文輸入法輸入"北"字時沒有任何提示. 我對原庫做了修改, 將keydown事件修改為keyup事件, 即可完成對中文的智能提示搜索. 另外主要需要將"matchContains"配置項設(shè)置為"true", 因為我們的搜索格式是"Beijing 北京", 默認(rèn)只匹配開頭的字符.

(5) 更多配置項

關(guān)于更多的配置項, 請參考官方文檔:

http://docs.jquery.com/Plugins/Autocomplete/autocomplete#toptions

(6) 更多事件

除了上面介紹的autocomplete()和result()函數(shù), 還有如下函數(shù):

search( ) : 激活search事件

flushCache( ) : 清空緩存

setOptions( options ) : 設(shè)置配置項

 

五.總結(jié)

本文詳細(xì)介紹了表單驗證插件和自動完成插件, 目前大家可以搜索到很多的插件應(yīng)用, 或者上千的插件列表, 但是卻找不到詳細(xì)的使用文檔. 插件用起來簡單但是真正的靈活應(yīng)用卻不容易, 除了要翻越英文文檔學(xué)習(xí)基本的使用, 還要花很長時間了解各個參數(shù)的作用, 如何配合使用等. 并且在上面做二次開發(fā)的難度相對較大, 插件的核心代碼多沒有注釋并且復(fù)雜,  要在其中尋找邏輯關(guān)系要花費(fèi)很多時間和精力. 本文介紹的兩個插件更多的細(xì)節(jié)請參考官方文檔, 地址都在一開始為大家提供了.

后續(xù)文章我決定先進(jìn)行jQuery技巧和javascript必備知識的講解,  我們很少開發(fā)自定義插件所以將開發(fā)插件篇放在最后.

 

本章節(jié)代碼下載:

http://files.cnblogs.com/zhangziqiu/Code-jQueryStudy-11.rar

 

 


出品公司:

藍(lán)藍(lán)設(shè)計(北京蘭亭妙微科技有限公司)是一家專注而深入的設(shè)計機(jī)構(gòu) ,為期望卓越的國內(nèi)外企業(yè)提供有效的視覺設(shè)計、ui界面設(shè)計、網(wǎng)站建設(shè)、用戶體驗服務(wù),涉及互聯(lián)網(wǎng)、IT軟件、電子、銀行、保健品等多個行業(yè),并建立了良好的口碑,積累了豐富的經(jīng)驗。 
全國統(tǒng)一服務(wù)熱線  400-608-6026  QQ:896757335

 

日歷

鏈接

個人資料

存檔

最近97中文超碰在线| 青青草一区二区三区| 男生草女生视频| 欧美高清不卡在线| 黄一区二区三区| 精品国产伦一区二区三| 99在线观看视频网站| 成人a免费在线看| 一二三区在线| av动漫在线免费观看| 亚洲国产视频一区| 色网在线免费观看| 欧美日韩理论片| 亚洲国产精品大全| 国产麻豆精品久久| 亚洲视频中文字幕在线观看| 国产不卡一区二区在线观看| 国产精品久久久久影院色老大| 黑人巨大精品| 香蕉久久久久久久| 国产精品视频成人| 国产精品无圣光一区二区| 看黄在线观看| 亚洲精品成人无码| 国产精品白嫩初高中害羞小美女| 久久久午夜精品理论片中文字幕| 草草影院在线| 国产又粗又猛又爽又黄av| 午夜美女久久久久爽久久| 日韩精品一卡二卡三卡四卡无卡| 高清视频在线www色| 中文字幕一区二区三区四区五区人 | 一区二区三区毛片| 欧美性aaa| av片在线免费看| 国产成人一区三区| 久久综合成人精品亚洲另类欧美 | 国产乱码精品1区2区3区| 亚洲淫性视频| 毛茸茸多毛bbb毛多视频| 91精品国产91久久久久| 成人国产一区二区三区精品| 日本在线视频中文有码| 国产激情第一页| 国产精品国产三级国产aⅴ浪潮| 久久精品视频一区二区三区| 韩国主播福利视频一区二区三区| 欧美黑人性猛交xxx| 99久久国产免费免费| 午夜在线成人av| 欧美男gay| 欧美熟妇另类久久久久久不卡| 女人扒开屁股爽桶30分钟| 亚洲性视频网址| 久久99久久精品| 黄色视屏在线免费观看| 国产盗摄一区二区三区在线| 国产精品手机视频| 欧美日韩成人激情| 一本久久综合| 日日夜夜天天综合入口| 91制片厂在线| 国产专区一区二区| 91麻豆精品国产无毒不卡在线观看| 国产精品日韩久久久| 91麻豆一二三四在线| 国产极品美女在线| 神马一区二区影院| 亚洲激情 国产| 国产成人午夜电影网| 国精品产品一区| 成人午夜在线视频| 激情五月婷婷小说| 欧美国产视频在线观看| 精品乱人伦小说| 国产福利一区二区三区视频在线 | 精品一区二区三区不卡 | 国产视频在线观看一区| 91精品国产91久久久久久一区二区| 日韩国产欧美在线播放| 亚洲高清黄色| 伊人影院中文字幕| 男人搞女人网站| 国产精品嫩草视频| 欧美日韩国产a| 另类小说欧美激情| 成人国产精品一区二区网站| 亚洲女人18毛片水真多| 亚洲天堂小视频| 国产在线精品一区二区三区》 | 国产又黄又粗又爽| 99视频在线视频| 91老司机在线| 亚洲福利在线看| 国产日产欧美精品一区二区三区| 精品国产91乱码一区二区三区四区 | 国产成人精品无码高潮| 久久资源综合| 欧美一区二区三区在线观看视频| www.成年人| 全球最大av网站久久| 日韩一区二区中文字幕| 性欧美18—19sex性高清| 九九热hot精品视频在线播放| 亚洲激情在线视频| 国产制服丝袜在线| 天堂一区二区三区四区| 亚洲男人7777| 蜜桃视频最新网址| 欧美1区视频| 97超级碰碰碰| 久久精品视频日本| 裸体素人女欧美日韩| 亚洲在线观看视频网站| 天堂网在线中文| 国产人成一区二区三区影院| 亚洲第一页在线视频| 免费毛片在线看片免费丝瓜视频| 精品色蜜蜜精品视频在线观看| 一女二男3p波多野结衣| 国产精品欧美一区二区三区不卡| 亚洲欧美日韩视频一区| 亚洲最大的黄色网址| 韩日成人在线| 国产精品色午夜在线观看| 日本精品一二区| 国产一区二区三区久久久 | 色狠狠一区二区三区香蕉| 亚洲第一成肉网| 9999在线精品视频| 精品网站999www| 欧美特级一级片| 日韩网站在线| 91精品视频在线看| 在线欧美成人| 亚洲精品亚洲人成人网在线播放| 不要播放器的av网站| 欧美aaa大片视频一二区| 日韩高清不卡av| 日韩激情小视频| 国产一区二区三区的电影| 91久久久久久国产精品| 中文字幕一二三区在线观看| 亚洲免费av观看| 15—17女人毛片| 里番精品3d一二三区| 欧美成人自拍视频| 一级黄色片免费| 99国产精品久久久| 亚欧无线一线二线三线区别| 日本亚洲欧洲无免费码在线| 中文字幕久久精品| 老熟妇一区二区三区| 成人精品视频一区二区三区| 亚洲午夜精品一区二区三区| 亚洲精品国产精品国产| 国产视频久久网| 精品在线播放视频| 国产成人av资源| 992tv成人免费观看| 欧美电影免费观看网站| 日韩av一区在线观看| 亚洲日本韩国在线| 福利一区福利二区| 可以在线看的av网站| 日韩中文字幕视频网| 欧美极品美女视频网站在线观看免费| 亚洲av综合一区| 国产日韩欧美一区二区三区综合| 十八禁视频网站在线观看| 欧美三级电影在线| 欧美一级在线亚洲天堂| 天天色综合久久| 午夜精品福利一区二区三区av | 香蕉久久免费影视| 欧美日韩亚洲国产| 中国人与牲禽动交精品| 国产免费黄色片| 亚洲欧洲99久久| 午夜影院免费观看视频| 亚洲精品一区二区在线看| 国产精品香蕉在线观看| av二区在线| 在线电影院国产精品| 免费在线一级片| 国产福利91精品| 成人中文字幕在线播放| 一区二区美女| 国产九九精品视频| 成年人黄视频在线观看| 精品国产欧美一区二区| 欧美一级淫片免费视频黄| 91女神在线视频| 天天操狠狠操夜夜操| 66视频精品| 国产免费一区| xxxxxx欧美| 久久精品色欧美aⅴ一区二区| 亚洲av综合色区无码一二三区| 一区二区三区.www| 成人免费无遮挡无码黄漫视频| 亚洲专区一区| 久久免费一级片| 成人黄色图片网站| 午夜精品久久久久久久久久久久 | 亚洲欧美激情另类校园| 成人黄色免费视频| 亚洲一区二区综合| www.xx日本| 国产福利91精品一区| 狠狠热免费视频| 91精品99| 蜜桃成人在线| 国产一区二区三区亚洲综合| 777精品视频| 欧美a在线看| 精品中文视频在线| 日韩在线观看视频一区| 欧美性猛交xxxx黑人| 国产jizz18女人高潮| 成人18视频日本| 91极品视频在线观看| 黄色成人精品网站| 亚洲国产欧美一区二区三区不卡| 亚洲三级av| 欧美影院在线播放| 污污的网站在线看| 久久视频中文字幕| 又黄又爽在线免费观看| 欧美第一区第二区| 亚洲一卡二卡在线| 欧美日韩免费在线观看| 欧美成人aaa片一区国产精品| 久久精品无码一区二区三区| 久久人人爽人人人人片| 日av在线不卡| 538在线视频观看| 欧美特黄一区| 亚洲爆乳无码精品aaa片蜜桃| 色悠久久久久综合先锋影音下载| 国产美女久久精品| 成人av三级| 亚州欧美日韩中文视频| dy888亚洲精品一区二区三区| 亚洲图片欧美日产| 宅男宅女性影片资源在线1| 91精品国产综合久久精品性色| 国产精品日韩无码| 欧美三级视频在线| 国产精品熟女视频| 黑人狂躁日本妞一区二区三区| 成人免费精品动漫网站| 国产女主播在线一区二区| 国产精品久久久久久亚洲色 | 99国产精品一区二区| 一区二区三区电影| 天堂一区二区三区四区| 女同一区二区| 色妞ww精品视频7777| 国产麻豆乱码精品一区二区三区| 99热这里有精品| 91嫩草在线视频| 日本免费成人| 91久久久亚洲精品| japansex久久高清精品| 91传媒视频在线观看| 粉嫩91精品久久久久久久99蜜桃| 国产欧美一区二区三区在线| 神马久久资源| 国产日韩精品在线播放| 国产精品999.| 成熟的女同志hd| 国产女人高潮时对白| 永久av在线| 北条麻妃一区二区三区在线观看| 国产成人三级在线观看| 中文国产成人精品久久一| 成人在线看视频| 最近中文字幕免费观看| 亚洲综合电影| 成人区精品一区二区婷婷| 国产jizzjizz一区二区| 亚洲激情视频网站| 久久国产精品99久久久久久丝袜| 东方伊人免费在线观看| 成人午夜精品视频| 搞黄视频免费在线观看| 亚洲国产91视频| 日韩视频精品在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 日本高清成人免费播放| 久久影院免费观看| 亚洲精品一区二区三区四区五区| 国产成人无码一区二区在线观看| 国产成人久久精品77777综合| 99视频这里有精品| 黑人精品欧美一区二区蜜桃| 91麻豆精品国产91久久久 | 国产一区二区精品在线| 欧美美女一级片| 日韩免费黄色片| av在线之家电影网站| 亚洲成人激情社区| 欧美福利影院| 亚洲激情一二三区| 不卡中文字幕av| 欧美日韩另类丝袜其他| www.com污| 你懂的国产视频| 大菠萝精品导航| 亚洲精品婷婷| 亚洲黄网站在线观看| 中文字幕亚洲激情| 国产精品亚洲天堂| 日本少妇高清视频| 韩国av网站在线| 中文字幕亚洲影视| 看电视剧不卡顿的网站| 日韩精品在线观| 久久免费99精品久久久久久| 在线观看亚洲大片短视频| 污污片在线免费视频| 狠狠爱www人成狠狠爱综合网| 亚洲一区二区欧美| 欧美一级片在线播放| 丰满的亚洲女人毛茸茸| 成人在线免费电影| 亚洲一区二区三区高清不卡| 久久精品国产sm调教网站演员| 国产日韩欧美三级| 国产大学生av| 国产精品美女久久久久久2018| 久久国产黄色片| 欧美一激情一区二区三区| 亚洲а∨精品天堂在线| 97视频在线观看网址| 日本精品一区二区三区在线观看视频| 日本精品一区二区三区不卡无字幕| 欧美天堂亚洲电影院在线观看| the porn av| 久久久久久久久岛国免费| 久久久久久久久久久影院| 91精品婷婷国产综合久久性色| 国产高清视频在线| 全亚洲最色的网站在线观看| 国产厕拍一区| 免费成人午夜视频| 国产精一品亚洲二区在线视频| 欧洲猛交xxxx乱大交3| 欧美日韩午夜激情| 人人妻人人澡人人爽精品日本| 欧美精品在线视频观看| 欧美精选视频一区二区| 亚洲黄色一区二区三区| 丝瓜av网站精品一区二区| 大地资源二中文在线影视观看| 亚洲午夜影视影院在线观看| 中文字幕一级片| 在线看日韩av| 久久久久毛片| 永久久久久久| 国产一区二区在线观看免费| 一区二区在线观看免费视频| 欧美丝袜丝交足nylons| 高清av电影在线观看| 91国产精品91| 婷婷成人综合| 亚洲欧美国产中文| 国产精品午夜久久| 亚洲成人77777| 久久久综合av| 久久超级碰碰| 国产精品人人爽人人爽| 国产欧美一二三区| 在线观看中文字幕码| 日韩有码片在线观看| 国内欧美日韩| 欧美一级免费播放| 91捆绑美女网站| 国语对白做受69按摩| 少妇高潮久久77777| 国产一区精品二区| 日韩xxxx视频| 久久久精品国产99久久精品芒果| 成年人午夜视频| 亚洲人成77777在线观看网| 色8久久影院午夜场| 一区二区三区视频| 国产精品一区二区免费不卡| 99热在线观看免费精品| 日韩精品视频中文在线观看| 欧美成人精品三级网站| 麻豆传媒网站在线观看| 东方欧美亚洲色图在线| 91麻豆精品在线| 一区二区三区高清国产| 欧美成年网站| 午夜宅男在线视频| 亚洲天堂2016| 你懂的在线免费观看|