Jquery UI自动完成格式选择

时间:2015-01-12 11:00:41

标签: jquery jquery-ui

如何格式化自动完成小部件输入到文本框的值?

以下是代码:

$(function() {
    var persons = [
        {
            "salutation": "Mr."
            "name": "John Smith"
        },
        {
            "salutation": "Ms."
            "name": "Mary Doe"
        },
        {
            "salutation": "Mrs."
            "name": "Ana Smith"
        }
    ];

    $("input[name=text]").autocomplete({
        source: persons
    }).data("autocomplete")._renderItem = function(ul, item) {
        return $("<li>").data("item.autocomplete", item).append("<a>" + item.name +  "</a>").appendTo(ul);
    };
});

触发select事件后,如何将对象的称呼和名称属性添加到文本框中?

由于

1 个答案:

答案 0 :(得分:0)

正如您在official documentation here中看到的那样,item的{​​{1}}参数包含_renderItem的属性,因此您可以像这样访问它们:

current objectitem.salutation

并将它们设置为输入值。

以下是官方示例中的一小部分代码:

item.name

<强>更新

我已经实施了您想要的解决方案。请在下面查看。

var projects = [
    {
        value: "jquery",
        label: "jQuery",
        desc: "the write less, do more, JavaScript library",
        icon: "jquery_32x32.png"
    },
    {
        value: "jquery-ui",
        label: "jQuery UI",
        desc: "the official user interface library for jQuery",
        icon: "jqueryui_32x32.png"
    }
];


$( "#project" ).autocomplete({
    source: projects,
    select: function( event, ui ) {
        $( "#project" ).val( ui.item.label );
        $( "#project-id" ).val( ui.item.value );
        $( "#project-description" ).html( ui.item.desc );
        $( "#project-icon" ).attr( "src", "images/" + ui.item.icon );
        return false;
    }
    // ...
})
// ...
.autocomplete( "instance" )._renderItem = function( ul, item ) {
    return $( "<li>" )
        .append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
        .appendTo( ul );
}; 
$(function() {

  var persons = [{
    "salutation": "Mr.",
    "label": "John Smith"
  }, {
    "salutation": "Ms.",
    "label": "Mary Doe"
  }, {
    "salutation": "Mrs.",
    "label": "Ana Smith"
  }];

  $("input[type=text]").autocomplete({
      minLength: 0,
      source: persons,
      focus: function(event, ui) {
        $(this).val(ui.item.label);
        return false;
      },
      select: function(event, ui) {
        $(this).val(ui.item.salutation + ' ' + ui.item.label);

        return false;
      }
    })
    .data("autocomplete")._renderItem = function(ul, item) {
      return $("<li>")
        .data("item.autocomplete", item)
        .append("<a>" + item.salutation + "<br>" + item.label + "</a>")
        .appendTo(ul);
    };
});