小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

jQuery UI Autocomplete 類似百度、谷歌輸入框的自動填充文本域 .

 昵稱12294608 2013-05-13

jQuery UI 1.8版本新增了2個非常有用的控件:一個是Button,其作用是自定義頁面按鈕的樣式;另一個就是Autocomplete,其作用是使文本框具有類似百度、谷歌輸入框那種自動填充的能力。

 

Autocomplete的函數(shù)原型如下:

  1. $(selector).autocomplete({  
  2.     source: [], // 自動填充的備選數(shù)據(jù),注1   
  3.     position: {my: "left top", at: "left bottom"}, // 下拉列表相對于文本框的位置,注2   
  4.     minLength: 1, // 自動填充被激活前需要輸入的最小字符數(shù),默認(rèn)為1   
  5.     delay: 300, // 停止輸入到自動填充被激活的延遲時間,默認(rèn)為300   
  6.     autoFocus: false// 是否自動聚焦于下拉列表第一項,默認(rèn)為false   
  7.     appendTo: "body"// 自動填充的下拉列表放到哪個元素內(nèi)部,注3   
  8.     disabled: false// 是否禁用自動填充,默認(rèn)為false   
  9.     create: function(event, ui) {}, // 自動填充被創(chuàng)建時被觸發(fā)   
  10.     search: function(event, ui) {}, // 在達(dá)到最小輸入字符數(shù)并且延遲時間結(jié)束之后,自動填充數(shù)據(jù)請求開始之前被觸發(fā)   
  11.     open: function(event, ui) {}, // 下拉列表打開時被觸發(fā)   
  12.     focus: function(event, ui) {}, // 下拉列表項被聚焦時觸發(fā),ui.item對應(yīng)被聚焦的列表項   
  13.     select: function(event, ui) {}, // 下拉列表項被選擇時觸發(fā),ui.item對應(yīng)被選擇的列表項   
  14.     close: function(event, ui) {}, // 下拉列表隱藏時被觸發(fā)   
  15.     change: function(event, ui) {} // 文本域的值發(fā)生改變時被觸發(fā),ui.item對應(yīng)新的被選擇的列表項   
  16. });  

其中,Autocomplete作用的元素一般是<input type=”text”>或者<textarea>這些帶輸入框的標(biāo)簽。

注釋:

注1,source是Autocomplete核心屬性,表示自動填充時所需的備選數(shù)據(jù)集合,必填,其它的屬性和事件都是非必需的。

source的可選值有三種類型:

一是Array型,可以是形如[“Java”, “JavaScript”, “CSS”, “jQuery”, “PHP”, “HTML”] 的一元字符串?dāng)?shù)組,也可以是形如 {{label: “choice1”, value: “value1”}, {label: “choice2”, value: “value2”},…} 的二元字符串?dāng)?shù)組。

二是String型,表示能返回形如上述兩種數(shù)組格式的JSON數(shù)據(jù)的URL鏈接。

三是function型,其函數(shù)原型是function(request, response) ,其中:參數(shù)request表示數(shù)據(jù)請求,它只有唯一的屬性term,request.term表示當(dāng)前文本框中的輸入值;參數(shù)response表示數(shù)據(jù)響應(yīng),它是一個已經(jīng)定義好的回調(diào)函數(shù),需要在本function的函數(shù)體中傳入?yún)?shù)作為調(diào)用,response的參數(shù)必須是符合前述兩種數(shù)組格式的數(shù)組數(shù)據(jù)。

注2, position表示的是下拉菜單相對于文本輸入框的位置,其格式符合jQuery UI Position規(guī)則。通常來說只用到my和at兩個索引,即形如{my: "left top", at: "left bottom"}。其中my表示下拉菜單,my: “l(fā)efttop” 表示下拉菜單的左上角;at表示在輸入框的什么位置,at: “l(fā)eft bottom” 表示在輸入框的左下角。

注3,appendTo表示數(shù)據(jù)響應(yīng)時出現(xiàn)的下拉列表是被添加到哪個元素的內(nèi)部,其值是滿足jQuery選擇器的字符串,如”#id”、”.class” 等。默認(rèn)為”body”,即<body>元素的jQuery對象。不過通常這個元素?zé)o需設(shè)置,使用默認(rèn)值即可。

另外,Autocomplete的7個可選事件的參數(shù)都是event和ui:event表示事件對象,與其它諸如click、select等事件中的event差別不大;ui表示的是下拉列表這種控件的DOM對象,ui.item表示列表項,ui.item.value表示列表項的值,基本只在focus、select、change事件中會被用到。

 

下面的代碼結(jié)合Autocomplete和Ajax模擬了一個異步查詢姓名的自動填充輸入域:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www./1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>Test Autocomplete</title>  
  6. <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.18.custom.css" rel="stylesheet" />   
  7. <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>  
  8. <script type="text/javascript" src="js/jquery-ui-1.8.18.custom.min.js"></script>  
  9. <script type="text/javascript">  
  10. $(function() {  
  11.     $("#auto").autocomplete({  
  12.         source: function(request, response) {  
  13.             $.ajax({  
  14.                 url: "http://localhost/phptest/index.php",  
  15.                 data: {  
  16.                     name: request.term  
  17.                 },  
  18.                 dataType: "json",  
  19.                 success: function(data, textStatus, jqXHR) {  
  20.                     response($.map(data, function(item, index) {  
  21.                         return item.name;  
  22.                     }));  
  23.                 }  
  24.             });  
  25.         },  
  26.         delay: 600,  
  27.         select: function(event, ui) {  
  28.             $(".result").remove();  
  29.             $("#auto").before("<div class='result'></div>");  
  30.             $(".result").html(ui.item.value);  
  31.         }  
  32.     });  
  33. });  
  34. </script>  
  35. </head>  
  36.   
  37. <body>  
  38. <input type="text" id="auto" />  
  39. </body>  
  40. </html>  

其中Ajax的url:http://localhost/phptest/index.php是本地一個返回json格式的姓名數(shù)組的測試文件。

需要注意的是按照jQuery UI的格式,需要導(dǎo)入三個文件,即:

  1. <link type="text/css"href="css/ui-lightness/jquery-ui-1.8.18.custom.css"rel="stylesheet" />       
  2. <script type="text/javascript"src="js/jquery-1.7.1.min.js"></script>  
  3. <script type="text/javascript"src="js/jquery-ui-1.8.18.custom.min.js"></script>  

另外代碼中用到的$.map 函數(shù)也是一個很有用的數(shù)組生成/裝配函數(shù)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約