1. 程式人生 > >JQuery.autocomplete擴充套件功能:實現多列自動提示

JQuery.autocomplete擴充套件功能:實現多列自動提示

     最近做一個專案,用到了JQuery的自動補全函式,但預設的是隻顯示一列資料,所以就略加修改,拿出來獻醜了。

   下面這個是預設呼叫本地資料:      

   $("#tags").autocomplete(["c++","java", "php", "coldfusion","javascript"],   //這個引數是一個自動補全的一個數據陣列,當你輸入一個字元,它就會把有的顯示出來,這個靜態賦值//不是很好(個人覺得)。

      {                  //下面是一些顯示效果引數
         width: 320,
         max: 4,
         highlight: false,
         multiple: true,
          multipleSeparator: "",
         scroll: true,
        scrollHeight: 300
        });

下面這個是呼叫後臺資料:

 $("#...").autocomplete({
       source: function(resquest,response){
           $.ajax({
               url:'.........',//請求地址
               type: "post",
               dataType:"json",//返回型別
               success: function(msg){
                   response(msg);//返回需要提示的內容
               }
           });
       }
     });   
以上都是一般使用。

 下面是本文的重點:

   function extendAutocomplete(){//這是一個擴充套件函式,繼承自ui.autocomplete
    $.widget('custom.multipeCln',$.ui.autocomplete,{
        _renderItem : function( ul, item ) {//這裡重寫autocomplete的_renderItem方法
            if(ul.html() == ""){
                var div = $('<div class="ui-widget-header" style="width:100%"></div>');
                var table = $('<table  style="width:100%" border=0></table>');
                var thead = $('<thead  style="width:100%"></thead>');
                var tr = $('<tr style="width:100%"></tr>');
                $.each(this.options.columns, function(index, item) {//這裡遍歷需要顯示列的標題
                    tr.append('<td style="padding:0 4px;float:left;width:' + item.width + 'px;">' + item.name + '</td>');
                });
                thead.append(tr);
                table.append(thead);
                div.append(table);
                ul.append(div);
            }
            var t = '';
             t =  '<span  style="width:100%">';
             t += '<table  style="width:100%" border=0>';
            t += '<tr style="width:100%">';
            
           $.each(this.options.columns, function(index, column) {//遍歷顯示的值
                t += '<td style="padding:0 4px;float:left;width:' + column.width + 'px;">' + item[column.name.toLowerCase()] + '</td>';
           });
           t += "</tr></table></span>";
            
            return $( "<li>" ).append( $( "<a  class='mcacAnchor'>" ).html( t ) ).appendTo( ul );
        }
    });
}

下面是使用這個擴充套件

$(function(){
    var data=[{'model':'1221','manufacturer':'HTML'},{'model':'1221','manufacturer':'HTML'},{'model':'3221','manufacturer':'HTML212'},{'model':'789221','manufacturer':'HTML343'}];
    extendAutocomplete();
    $('#auto').multipeCln({
        showHeader : true,
        columns : [{name : 'Model', width : 200},{name : 'Manufacturer', width : 200}],//設定顯示列的標題
        select: function(event, ui) {//這裡操作點選提示框中資料後,顯示到文字框中的樣式
    
            this.value = ui.item.model + (ui.item.manufacturer ? '/' + ui.item.manufacturer : '');
            return false;
        },
        source:function(request,response)
            {    
                response(data);
             }
    });
    });

顯示效果圖:

希望對大家有幫助,第一次寫文章,不足之處請大家多多提點。

相關推薦

JQuery.autocomplete擴充套件功能實現自動提示

     最近做一個專案,用到了JQuery的自動補全函式,但預設的是隻顯示一列資料,所以就略加修改,拿出來獻醜了。    下面這個是預設呼叫本地資料:          $("#tags").autocomplete(["c++","java", "php", "col

jquery擴充套件html5+canvas實現張圖片 預覽 壓縮 上傳

主要javascript程式碼 (function($){ $.fn.extend({ aiiUpload:function(obj) { if(typeof obj !="object") { alert('引數錯誤'); retur

baidu地圖實現點連線渲染

off utf ntc ack -type navig center div tex <script type="text/javascript"> var points = [ {"Lng":120.17787645967861,"Lat":30.25

Python3.x實現任務(進程)

並發 引用 target 函數 color 日期 ctime strftime span Python3.x:實現多任務(多進程) # python3 # author lizm # datetime 2018-02-13 16:00:00 # -*- coding: u

DevExpress控件cxGrid實現模糊匹配輸入的完美解決方案

change chang pro 檢索 res ble tableview 封裝 完美解決 本方案不需要修改控件源碼,是完美解決cxgrid或TcxDBExtLookupComboBox支持多列模糊匹配快速輸入的最佳方案!! 小哥摸索多日,終於搞定cxgrid和TcxDBE

【練習】字典的循環遍歷實現層級節點存取

輸入 lose 功能 print path input 內存地址 sleep pat 關鍵點:字典、列表、集合等可變類型,若將一個可變類型賦給變量A和B,通過B改變了該可變類型內部的元素,指向該可變類型內存地址的變量A的值一樣會跟著改變(因A、B同時指向了一個內存地址)

Spring Data JPA 二實現表關聯分頁查詢

最近在對JPA的使用過程中發現對於單表的操作很是方便,但是當設計到多表聯查的時候就需要有一些特殊的操作了。 專案中有一個場景是後臺需要做一個分頁的列表查詢,所需要的資料分散在兩張表中,如果是用mybatis的話直接定義resultMap,然後手寫SQL就可以了。而在JPA中就需要用到JPQL

Spring Data JPA 一實現表關聯查詢

多表查詢在spring data jpa中有兩種實現方式,第一種是利用hibernate的級聯查詢來實現,第二種是建立一個結果集的介面來接收連表查詢後的結果,這裡介紹第二種方式。 一、一對一對映 實體 UserInfo :使用者。 實體 Address:家庭住址。 這裡通過外來鍵的方

例項建立一個表格,分頁顯示資料(MongoDB資料庫儲存),功能實現增刪改查

需求:建立一個表格,分頁顯示資料,功能:實現增刪改查 效果圖: 自動建立一個專案 命令列: express mongodb-demo --view=ejs cd mongodb-demo npm install npm install mongodb --save npm sta

pandas DataFrame高效程式設計方法 根據的值做判斷,生成新的值,其中的值是包含個值的資料型別

一.遇到的問題描述: 我遇到問題的資料比較複雜,下面以比較簡單的資料為例說明問題,所以這些資料的含義是沒有意義的,可以忽略資料的的具體意義。資料如下所示: import numpy as np import pandas as pd data = {'city': [{'Beijing':1

Spring boot 的profile功能如何實現環境配置自動切換

通常服務端應用開發需要經過以下幾個流程: 開發 -> 測試 -> RC驗證 -> 上線 這就涉及到四個不同的環境,開發環境、測試環境、RC環境以及生產環境,為了避免不同環境之間相互干擾,通常需要獨立部署資料庫、快取伺服器等,那麼應用配置也要做相應的調整。

DevExpress控制元件cxGrid實現模糊匹配輸入的完美解決方案

本方案不需要修改控制元件原始碼,是完美解決cxgrid或TcxDBExtLookupComboBox支援多列模糊匹配快速輸入的最佳方案!! 小哥摸索多日,終於搞定cxgrid和TcxDBExtLookupComboBox可以支援多列模糊查詢輸入了! 縱觀網上的方案,不是

CSS利用padding和margin正負相消實現等高

什麼是等高佈局? 先來看一個案例:   上圖中的頁面的主體內容是兩列結構,左列是用來導航的,右列是用來顯示內容的。我們看到它們有一個共同的邊框,中間還有一條分隔線,左右兩列的高度都是不固定的。這種情況下就需要兩列的高度保持一致了,左邊高度增加,右邊也跟著增加,右邊高度增加,左邊同樣也要增加,否則就會出現“斷

canvas儲存為data:image擴充套件功能實現

【已知】 canvas提供了toDataURL的介面,可以方便的將canvas畫布轉化成base64編碼的image。目前支援的最好的是png格式,jpeg格式的現代瀏覽器基本也支援,但是支援的不是很好。 【想要的】 往往這麼簡單直接的介面通常都滿足不了需求。我想要的不僅是簡單

cocos2dx tableview基礎實現圖片的滑動顯示

通過tableview實現滑動顯示26個字母圖片,點選圖片執行相應的動作。 tableview 需要繼承TableViewDataSource(資料來源),TableViewDelegate(觸屏事件處理),同時實現其虛擬函式。 程式碼如下: 標頭檔案TableViewTe

margin-bottom負值實現等高佈局

什麼是多列等高佈局? 經常會有這樣的需求,一個父容器中,存在多列子容器,這些子容器的高度是不固定的,正常情況下,父容器的高度會隨著其子容器最高的那個容器的高度而變化伸縮,但其它子容器的高度並不會變化,導致如下結果 顯然,這並不是我們想要的,我們需要左側和右側的高度共同變化

實驗實現實例 、數據庫的create和alter、create表

服務 fun creat chang .cn 文件中 rom uic 實例 多實例:軟件程序運行了多次,規劃:第一個端口在“ 3306 ”,第二個端口在“ 3307 ”,第三個端口在“ 3308 ”,在對外提供服務時,就感覺是三個mysql服務器一樣。(此實驗與mariad

記錄一下Linq實現排序的問題

bubuko 訂單 金額 .com 分享圖片 記錄 方式 mage 單列 記錄一下,平時用的不多,容易忘記關鍵字 以一個訂單列表為例 , 按金額+時間方式排序 先按金額從大到小排序,如果金額相等 則按時間先後順序排序 記錄一下Linq實現多列排序的問題

Java執行緒技術實現使用者服務端Socket通訊

目錄 前言回顧 一、多使用者伺服器 二、使用執行緒池實現服務端多執行緒 1、單執行緒版本 2、多執行緒版本 三、多使用者與服務端通訊演示 四、多使用者伺服器完整程式碼 最後 前言回顧 在上一篇《Java多執行緒實現TCP網路Socket程式設計(C/S通訊)》,我們解決了伺服器端在建立連線後,連續傳送多條資

利用kickstart、http、dhcp、pxe實現系統自動安裝

PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網路模式,支援工作站通過網路從遠端伺服器下載映像,並由此支援通過網路啟動作業系統,在啟動過程中,終端要求伺服器分配IP地址,再用TFTP(trivial file