zoukankan      html  css  js  c++  java
  • 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);
                 }
        });
        });
    

    显示效果图:

  • 相关阅读:
    数字电路与系统-组合逻辑电路逻辑冒险
    数字电路与系统-组合逻辑电路竞争与冒险
    数字电路与系统-组合逻辑电路理论分析(视频)
    数字电路与系统-逻辑函数最后的总结
    微信小程序--成语猜猜看
    微信小程序开发中如何实现侧边栏的滑动效果?
    强力推荐微信小程序之简易计算器,很适合小白程序员
    【微信小程序】自定义模态框实例
    编程微刊第四期文章汇总(2018.4)
    ajax实现简单的点击左侧菜单,右侧加载不同网页
  • 原文地址:https://www.cnblogs.com/interdrp/p/12541249.html
Copyright © 2011-2022 走看看