Ajax 實現函數 autocomplete

          <html xmlns="http://www.w3.org/1999/xhtml">
           <head id="Head1" runat="server">
               <title>AutoComplate</title>
               <script type="text/javascript" src="js/jquery.min.js"></script>
               <script type="text/javascript" src="js/jquery.autocomplete.min.js"></script>
             
              <link rel="Stylesheet" href="js/css/jquery.autocomplete.css" /> 
             
               <script type="text/javascript">
                   $(
          function() {

                     var emails = [

                          { name: "Peter Pan", to: "peter@pan.de" },

                          { name: "Molly", to: "molly@yahoo.com" },

                          { name: "Forneria Marconi", to: "live@japan.jp" },

                          { name: "Master <em>Sync</em>", to: "205bw@samsung.com" },

                          { name: "Dr. <strong>Tech</strong> de Log", to: "g15@logitech.com" },

                          { name: "Don Corleone", to: "don@vegas.com" },

                          { name: "Mc Chick", to: "info@donalds.org" },

                          { name: "Donnie Darko", to: "dd@timeshift.info" },

                          { name: "Quake The Net", to: "webmaster@quakenet.org" },

                          { name: "Dr. Write", to: "write@writable.com" }

                          ];
                                  
                       $('#content').autocomplete(emails,
                       {
                          width :400,
                          formatItem: function (row, i, max) {  
                           //   var row=eval("("+row+")");//將JSON轉換成對象   
                              return "<table><tr><td align='left'>" + row.name + "</td><td align='right'>約" + row.to + "個寶貝</td></tr></table>";

                           },
                          formatMatch: function(row, i, max){
                             // var obj=eval("("+row+")");//將JSON轉換成對象   
                               return row.name + " " + row.to;

                          } ,

                          formatResult: function(row, i, max) {
                            
                                return row.to;

                            }                
                       });
                  

                   
                     //此處為動態查詢數據例子  (返回Json)
                       $("#keyword").autocomplete("default6.aspx", {
                                  minChars: 
          0
                                  max:
          10
                                  width: 
          400,
                                  matchCase:
          false,//不區分大小寫
                                //  matchContains :true,
                                 // autoFill: false,
                                  scroll: false,
                                  dataType: 
          'json',    
                                  scrollHeight: 
          500,
                                 //此處為傳遞參數
                                  extraParams:{v:function() { return $('#keyword').val();}},
                                //需要把data轉換成json數據格式 
                               
                                  parse: function(data) {
                                     
          return $.map(eval(data), function(row) {
                                         
          return {
                                          data: row,
                                          value: row.Guage,    //此處無需把全部列列出來,只是兩個關鍵列
                                          result: row.Matcode 
                                        }
                                  });
                           },
                          formatItem: 
          function(data, i, total) {  
                             
          return "<table><tr><td align='left'>" + data.Guage + "</td><td align='right'> " + data.Unit + " </td></tr></table>"
                              
                           },
                          formatMatch: 
          function(data, i, total) {
                                      
          return data.Guage;
                           },
                          formatResult: 
          function(data, value) { 
                                    
           return data.Guage;   
                           }
                          }).result(
          function(event, data, formatted) { //回調
                                   $('#keyword').val(data.Matcode);   //不知為何自動返回值后總是加了個“,”,所以改成后賦值
                                   $(
          "#content").val(data.Guage+data.Unit);
                      });
            });  
               
          </script>
           </head>
           <body>
               <form id="form1" runat="server">
               <div>
                   <input id="keyword" />
                   <input id="content" />
               </div>
               </form>
           </body>
           </html>
          復制代碼

          引用:

          三、參數說明:

          * minChars (Number):

          在觸發autoComplete前用戶至少需要輸入的字符數.Default: 1,如果設為0,在輸入框內雙擊或者刪除輸入框內內容時顯示列表

          * width (Number):

          指定下拉框的寬度. Default: input元素的寬度

          * max (Number):

          autoComplete下拉顯示項目的個數.Default: 10

          * delay (Number):

          擊鍵后激活autoComplete的延遲時間(單位毫秒).Default: 遠程為400 本地10

          * autoFill (Boolean):

          要不要在用戶選擇時自動將用戶當前鼠標所在的值填入到input框. Default: false

          * mustMatch (Booolean):

          如果設置為true,autoComplete只會允許匹配的結果出現在輸入框,所有當用戶輸入的是非法字符時將會得不到下拉框.Default: false

          * matchContains (Boolean):

          決定比較時是否要在字符串內部查看匹配,如ba是否與foo bar中的ba匹配.使用緩存時比較重要.不要和autofill混用.Default: false

          * selectFirst (Boolean):

          如果設置成true,在用戶鍵入tab或return鍵時autoComplete下拉列表的第一個值將被自動選擇,盡管它沒被手工選中(用鍵盤或鼠標).當然如果用戶選中某個項目,那么就用用戶選中的值. Default: true

          * cacheLength (Number):

          緩存的長度.即對從數據庫中取到的結果集要緩存多少條記錄.設成1為不緩存.Default: 10

          * matchSubset (Boolean):

          autoComplete可不可以使用對服務器查詢的緩存,如果緩存對foo的查詢結果,那么如果用戶輸入foo就不需要再進行檢索了,直接使用緩存.通常是打開這個選項以減輕服務器的負擔以提高性能.只會在緩存長度大于1時有效.Default: true

          * matchCase (Boolean):

          比較是否開啟大小寫敏感開關.使用緩存時比較重要.如果你理解上一個選項,這個也就不難理解,就好比foot要不要到FOO的緩存中去找.Default: false

          * multiple (Boolean):

          是否允許輸入多個值即多次使用autoComplete以輸入多個值. Default: false

          * multipleSeparator (String):

          如果是多選時,用來分開各個選擇的字符. Default: ","

          * scroll (Boolean):

          當結果集大于默認高度時是否使用卷軸顯示 Default: true

          * scrollHeight (Number):

          自動完成提示的卷軸高度用像素大小表示 Default: 180 

          * formatItem (Function):

          為每個要顯示的項目使用高級標簽.即對結果中的每一行都會調用這個函數,返回值將用LI元素包含顯示在下拉列表中. Autocompleter會提供三個參數(row, i, max): 返回的結果數組, 當前處理的行數(即第幾個項目,是從1開始的自然數), 當前結果數組元素的個數即項目的個數. Default: none, 表示不指定自定義的處理函數,這樣下拉列表中的每一行只包含一個值.

          * formatResult (Function):

          和formatItem類似,但可以將將要輸入到input文本框內的值進行格式化.同樣有三個參數,和formatItem一樣.Default: none,表示要么是只有數據,要么是使用formatItem提供的值.

          * formatMatch (Function):

          對每一行數據使用此函數格式化需要查詢的數據格式. 返回值是給內部搜索算法使用的. 參數值row

          * extraParams (Object):

          為后臺(一般是服務端的腳本)提供更多的參數.和通常的作法一樣是使用一個鍵值對對象.如果傳過去的值是{ bar:4 },將會被autocompleter解析成my_autocomplete_backend.aspx?q=foo&bar=4 (假設當前用戶輸入了foo). Default: {}

          * result (handler) Returns: jQuery

          此事件會在用戶選中某一項后觸發,參數為:

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

          formatted:formatResult函數返回的值

          $("#singleBirdRemote").result(function(event, data, formatted) {

          //如選擇后給其他控件賦值,觸發別的事件等等

          });

          四、注意問題:

          1.網上有人說對中文的檢索時處理有問題,經過測試此版本沒有問題 2.在使用遠程地址時,它默認傳入的參數是:q(輸入值),limit(返回結果的最大值),可以使用extraParams傳入其他的參數

          exmple:
          http://www.2cto.com/kf/201202/118735.html

          posted on 2012-05-19 00:14 youngturk 閱讀(598) 評論(0)  編輯  收藏 所屬分類: Ajax

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結構
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 通辽市| 遵化市| 封开县| 巫溪县| 建阳市| 英德市| 日喀则市| 光山县| 东源县| 镇宁| 江山市| 中方县| 石城县| 佛山市| 澄迈县| 宜都市| 蒙城县| 陵水| 和田市| 衡阳市| 固始县| 鲜城| 阳新县| 花莲县| 柞水县| 嵊泗县| 永善县| 开化县| 县级市| 中卫市| 张家港市| 平乐县| 西藏| 桦甸市| 铜鼓县| 无棣县| 河源市| 舞钢市| 尉氏县| 武宁县| 漳浦县|