【问题标题】:Formatting the jQuery UI autocomplete results in a table在表格中格式化 jQuery UI 自动完成结果
【发布时间】:2010-05-05 13:46:24
【问题描述】:

我现在根据之前的一些建议使用http://jqueryui.com/demos/autocomplete/,它对我来说效果很好。

我希望在表格的自动完成列表中格式化结果。现在我的结果是这样的:

Last name, first name - id number - status code

当有一个名字列表时,没有什么可以很好地排列

Name - ID - Status
Brown, Charlie - 2 - A
Jones, Henry - 3 - I

我想以某种方式得到

Name             ID  Status
Brown, Charlie   2   A
Jones, Henry     3   I

这可能吗?我目前正在使用一个 json 数据源,其中有一个“标签”、“值”和“id”数组:

{"label":"Brown, Charlie - 2 - A","value":"Brown, Charlie","id":"2"}
{"label":"<span style="color: red;">Jones, Henry - 3 - I</span>","value":"Brown, Charlie","id":"2"}

label在下拉列表中可见,value是返回到原始文本框,id是返回到隐藏字段。

我尝试将一些 div 混合到数组的标签部分,但没有成功。 非活动用户标签中的跨度对我来说很好,但我无法将跨度的宽度设置为固定宽度。

有什么我可以做的吗?

【问题讨论】:

    标签: javascript jquery jquery-ui autocomplete jquery-ui-autocomplete


    【解决方案1】:

    您是否考虑过使用固定字体(可能是 courier)然后填充您的姓名字段?

    这应该很好地排列起来。 比如:

    $maxWidth = 30;
    $nameWidth = strlen(lastname) + strlen(firstname) + 2  //don't forget the comma and space
    $padding = $maxWidth - $nameWidth;
    

    然后只需用计算出的数量填充姓氏,名字就可以了。

    【讨论】:

      【解决方案2】:

      我认为这可以帮助你,这里是js:

      $(function() {
      //overriding jquery-ui.autocomplete .js functions
      $.ui.autocomplete.prototype._renderMenu = function(ul, items) {
        var self = this;
        //table definitions
        ul.append("<table><thead><tr><th>ID#</th><th>Name</th><th>Cool&nbsp;Points</th></tr></thead><tbody></tbody></table>");
        $.each( items, function( index, item ) {
          self._renderItemData(ul, ul.find("table tbody"), item );
        });
      };
      $.ui.autocomplete.prototype._renderItemData = function(ul,table, item) {
        return this._renderItem( table, item ).data( "ui-autocomplete-item", item );
      };
      $.ui.autocomplete.prototype._renderItem = function(table, item) {
        return $( "<tr class='ui-menu-item' role='presentation'></tr>" )
          .data( "item.autocomplete", item )
          .append( "<td >"+item.id+"</td>"+"<td>"+item.value+"</td>"+"<td>"+item.cp+"</td>" )
          .appendTo( table );
      };
      //random json values
      var projects = [
          {id:1,value:"Thomas",cp:134},
          {id:65,value:"Richard",cp:1743},
          {id:235,value:"Harold",cp:7342},
          {id:78,value:"Santa Maria",cp:787},
          {id:75,value:"Gunner",cp:788},
          {id:124,value:"Shad",cp:124},
          {id:1233,value:"Aziz",cp:3544},
          {id:244,value:"Buet",cp:7847}
      ];
      $( "#project" ).autocomplete({
          minLength: 1,
          source: projects,
          //you can write for select too
          focus: function( event, ui ) {
              //console.log(ui.item.value);
              $( "#project" ).val( ui.item.value );
              $( "#project-id" ).val( ui.item.id );
              $( "#project-description" ).html( ui.item.cp );
              return false;
          }
      })
      });
      

      你可以看看这个fiddle

      这可能也有帮助 fiddle

      【讨论】:

        猜你喜欢
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 2011-02-04
        相关资源
        最近更新 更多