• JQuery.autocomplete扩展功能:实现多列自动提示


    最近做一个项目,用到了JQuery的自动补全函数,但默认的是只显示一列数据,所以就略加修改

       下面这个是默认调用本地数据:      

       $("#tags").autocomplete(["c++","java", "php", "coldfusion","javascript"],   //这个参数是一个自动补全的一个数据数组,当你输入一个字符,它就会把有的显示出来,这个静态赋值//不是很好(个人觉得)。

          {                  //下面是一些显示效果参数
             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="100%"></div>');
                    var table = $('<table  style="100%" border=0></table>');
                    var thead = $('<thead  style="100%"></thead>');
                    var tr = $('<tr style="100%"></tr>');
                    $.each(this.options.columns, function(index, item) {//这里遍历需要显示列的标题
                        tr.append('<td style="padding:0 4px;float:left;' + item.width + 'px;">' + item.name + '</td>');
                    });
                    thead.append(tr);
                    table.append(thead);
                    div.append(table);
                    ul.append(div);
                }
                var t = '';
                 t =  '<span  style="100%">';
                 t += '<table  style="100%" border=0>';
                t += '<tr style="100%">';
                
               $.each(this.options.columns, function(index, column) {//遍历显示的值
                    t += '<td style="padding:0 4px;float:left;' + 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);
                 }
        });
        });
    

    显示效果图:

  • 相关阅读:
    iOS- 移动端Socket UDP协议广播机制的实现
    iOS- 三步快速集成社交化分享工具ShareSDK
    iOS- iOS 7 的后台多任务 (Multitasking) 对比之前的异同、具体机制、变化
    iOS- Exception异常处理
    17. Subsets【medium】
    zookeeper程序员指南
    error while loading shared libraries错误解决
    82. Single Number【easy】
    53. Reverse Words in a String【easy】
    查看linux内核和版本信息
  • 原文地址:https://www.cnblogs.com/interdrp/p/12541249.html
Copyright © 2020-2023  润新知