我有一个使用自动完成功能实现的文本框。就是这样。
<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;吗
答案 0 :(得分:16)
初始化自动完成后,您可以像这样设置值:
$( "#txtcity" ).autocomplete({
// do whatever
}).val('Banana').data('autocomplete')._trigger('select');
答案 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
。