日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件

發(fā)布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本系列文章導(dǎo)航

從零開始學(xué)習(xí)jQuery (一) 開天辟地入門篇

從零開始學(xué)習(xí)jQuery (二) 萬能的選擇器

從零開始學(xué)習(xí)jQuery (三) 管理jQuery包裝集

從零開始學(xué)習(xí)jQuery (四) 使用jQuery操作元素的屬性與樣式

從零開始學(xué)習(xí)jQuery (五) 事件與事件對象

從零開始學(xué)習(xí)jQuery (六) jQuery中的Ajax

從零開始學(xué)習(xí)jQuery (七) jQuery動畫-讓頁面動起來!

從零開始學(xué)習(xí)jQuery (八) 插播:jQuery實(shí)施方案

從零開始學(xué)習(xí)jQuery (九) jQuery工具函數(shù)

從零開始學(xué)習(xí)jQuery (十) jQueryUI常用功能實(shí)戰(zhàn)

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

?

一.摘要

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

本文是介紹兩個最常用的jQuery插件. 分別用于表單驗(yàn)證和自動完成提示(類似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控件.

?

三.表單驗(yàn)證插件 validate

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

在比較了若干表單驗(yàn)證插件后, 決定采用validate插件. 因?yàn)槠涫褂煤唵尾⑶异`活.

插件首頁:

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í)例效果:

實(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 - 表單驗(yàn)證插件實(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>表單驗(yàn)證</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的控件添加兩個驗(yàn)證方法:required()和email()email: { required: true, email: true }},messages: {//為name為email的控件的required()和email()驗(yàn)證方法設(shè)置驗(yàn)證失敗的消息內(nèi)容email: {required:"需要輸入電子郵箱", email:"電子郵箱格式不正確"}}});}); </script> </body> </html>

?

2. 實(shí)例講解

(1) 驗(yàn)證方法

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

// http://docs.jquery.com/Plugins/Validation/Methods/emailemail: 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)置的驗(yàn)證方法. 同時插件還提供了additional-methods.js 文件, 里面包含了更多的驗(yàn)證方法, 引入后既可啟用.

(2) 驗(yàn)證消息

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

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

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


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

在下載文件的localization文件夾中, 包含了各國語言的基本驗(yàn)證消息, 如同本實(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)在必填項(xiàng)的問題提示就變成了中文.

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

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

?

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

(3)驗(yàn)證規(guī)則

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

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

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

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

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

class元素屬性設(shè)置元素的CSS樣式類, 因?yàn)闃邮筋愔刑砑恿藃equired類,? 所以會和required()驗(yàn)證函數(shù)關(guān)聯(lián). 這種規(guī)則叫做CSS樣式規(guī)則.

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

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

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

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

(4)? 表單提交

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

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

<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()方法, 因?yàn)榇朔椒〞|發(fā)表單驗(yàn)證,并且再次調(diào)用submitHandler設(shè)置的函數(shù), 會導(dǎo)致遞歸調(diào)用.

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

(5) DEBUG模式

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

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

(6) 多表單驗(yàn)證

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

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

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

?

?

四.自動完成插件 autocomplete

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

插件首頁:

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完成對輸入城市的自動提示效果,如圖:

實(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選項(xiàng)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是可選項(xiàng), 但是對于我們的數(shù)據(jù)源cityList是一個多屬性對象, 所以必須設(shè)置下面幾個關(guān)鍵的配置項(xiàng)后才能夠使用:

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ù), 此事件會在用戶選中某一項(xiàng)后觸發(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í)驗(yàn)結(jié)果是formatMatch返回的值. 在本實(shí)例為: "Beijing? 北京".

(4) 匹配中文

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

(5) 更多配置項(xiàng)

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

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

(6) 更多事件

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

search( )?:?激活search事件

flushCache( )?:?清空緩存

setOptions( options )?:?設(shè)置配置項(xiàng)

?

五.總結(jié)

本文詳細(xì)介紹了表單驗(yàn)證插件和自動完成插件, 目前大家可以搜索到很多的插件應(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

作者:張子秋
出處:http://www.cnblogs.com/zhangziqiu/

總結(jié)

以上是生活随笔為你收集整理的从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 野花视频免费在线观看 | 日韩视频精品在线 | 国产精品网站入口 | 久久在线视频 | 国产成人毛毛毛片 | 狂野欧美性猛交xxⅹ李丽珍 | 国产午夜精品理论片 | 亚洲午夜一区 | 黄色69| 亚洲欧美色图 | 亚洲av无码一区二区三区网站 | zzji欧美大片| 原神淫辱系列同人h | 成人免费网站 | www黄色av | 日韩超碰在线 | 在线播放a | 无码人妻精品一区二区50 | 日韩va视频 | 亚洲av综合av一区二区三区 | 嫩草懂你| 国产视频一区二区三区四区五区 | 性――交――性――乱睡觉 | 国产一区二区三区毛片 | 日韩在线视频网 | 小香蕉av| 国产一区二区三区视频在线 | 涩涩网站免费 | 久久国产这里只有精品 | 97超碰在线免费 | 午夜天堂精品久久久久 | 欧美男人亚洲天堂 | 香蕉视频网页 | 欧美一级爽aaaaa大片 | 动漫羞羞| 天天拍天天射 | 九色国产精品 | 91精品久久久久久久久中文字幕 | 999热精品视频 | 亚洲热av| 欧美性视频网站 | 欧美裸体xxx | 日本中文在线 | 黄页网站视频在线观看 | 国产麻豆视频 | 五月丁香久久婷婷 | 一级片高清| 欧美成年人视频在线观看 | 成人av在线播放网站 | 中文字幕永久在线观看 | 怎么可能高潮了就结束漫画 | 亚洲免费砖区 | 亚洲男女在线观看 | 日本三级在线 | 林由奈在线观看 | 永久免费54看片 | 欧美一区二区三区视频 | 哪里可以免费看毛片 | 中文字幕在线看片 | 国产一区 在线播放 | 免费三片在线播放 | 亚洲午夜精品久久 | 国产素人在线观看 | 西野翔夫の目の前で犯在线 | 四虎www| 婷婷伊人五月天 | 日韩一区二区三区在线播放 | 香蕉视频黄污 | a级片免费观看 | 久久艹艹| 一级女性全黄久久生活片免费 | 一区二区视频 | 男人天堂tv | 成人一级视频在线观看 | 激情宗合网 | 亚洲午夜在线播放 | 中文字幕制服丝袜 | 一本色道久久综合亚洲二区三区 | 日韩福利视频在线观看 | 成年人免费观看视频网站 | 91视频福利| 91av官网| 欧美91视频 | av一二三区 | 欧美日韩精品综合 | 国产com | av男人的天堂网 | 一区二区三区四区日韩 | 久久亚洲中文字幕无码 | 凹凸国产熟女精品视频 | 免费爱爱网站 | 影音先锋波多野结衣 | 国产福利免费观看 | 成人三级黄色 | 亚洲午夜无码av毛片久久 | 精品视频在线一区二区 | 亚洲精品美女在线观看 | 亚洲av无码久久忘忧草 | 白丝女仆被免费网站 |