如何在自动完成实现的文本框中设置默认值?

时间:2013-06-12 07:14:28

标签: jquery html jquery-autocomplete

我有一个使用自动完成功能实现的文本框。就是这样。

<input id="txtcity" />
$("#txtcity").autocomplete({
  source: function (request, response) {
    $.ajax({
      url: '@Url.Action("CityLookup", "PatientDemographic", "")', type: "POST", dataType: "json",
      data: { searchText: request.term, maxResults: 10 },
      success: function (data) {
        response($.map(data, function (item) {
          return { label: item.Text, value: item.Text, id: item.Value }
        }))
      }
    })
  },
  select: function (event, ui) {
    $("#CityCode").val(ui.item.id);
  },
  open: function () {
    $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
  },
  close: function () {
    $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
  }
});

这会返回三个结果,让我们说&#34; Apple&#34;,&#34; Banana&#34;,&#34; Cabbage&#34;。如何将默认值设置为&#34; Banana&#34;渲染时?即text =&#34; banana&#34;值=&#34; 2&#34;吗

5 个答案:

答案 0 :(得分:16)

初始化自动完成后,您可以像这样设置值:

$( "#txtcity" ).autocomplete({
  // do whatever
}).val('Banana').data('autocomplete')._trigger('select');

更新示例: http://jsfiddle.net/55jhx/1/

答案 1 :(得分:3)

更改以下行

 $('#txtcity').val() = item.value;

 $('#txtcity').val(item.text);

答案 2 :(得分:1)

触发ul中第一个元素的点击以触发select for autocomplete:

$("ul.ui-autocomplete li").first().trigger("click");

答案 3 :(得分:0)

我已经使用__response()方法解决了这个问题。希望这对寻求解决方案的人有所帮助。

$( 'selector' ).autocomplete( 'instance' ).__response = function(a) {
    let defaultValue = {
        label : 'Not found',
        value : null
    }
    if( a.length === 0 ) {
        a.push( $instance.elements.defaultValue ); 
    } else {
        a.unshift( $instance.elements.defaultValue ); 
    }
    a && (a = this._normalize(a)), this._trigger("response", null, {
        content: a
    }), !this.options.disabled && a && a.length && !this.cancelSearch ? (this._suggest(a), this._trigger("open")) : this._close();
}

谢谢

答案 4 :(得分:0)

我尝试过:

$( "#txtcity" ).autocomplete({
  // do whatever
}).val('Banana').data('autocomplete')._trigger('select');

,它无法正常工作。它会自动选择值,但结果为null

所以我只是尝试:

$( "#txtcity" ).autocomplete({
  // do whatever
}).val('Banana')

这将选择值,而不是null