jQuery ASP.NET 自动完成下拉列表
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4231387/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ASP.NET Auto Complete DropDownList
提问by Shahin
is there any Control or Jquery Plugin exist for asp.net Auto Complete DropDownList? if yes please link a sample here. I don't want use asp.net ajax control toolkit
是否存在用于 asp.net Auto Complete DropDownList 的 Control 或 Jquery 插件?如果是,请在此处链接示例。我不想使用 asp.net ajax 控件工具包
回答by Brandon Montgomery
I don't know if this is what you're looking for but there is a nice Facebook-like type-ahead list here:
我不知道这是否是您要找的,但这里有一个不错的类似 Facebook 的预先输入列表:
https://github.com/emposha/FCBKcomplete
https://github.com/emposha/FCBKcomplete
It is a jQuery plugin, and uses AJAX to call a web service to load the items for the list as you type, and implements some smart caching as well to save on web service calls. Like I said, might not be exactly what you're looking for, but it's worth a glance at least.
它是一个 jQuery 插件,使用 AJAX 调用 Web 服务以在您键入时加载列表中的项目,并实现一些智能缓存以节省 Web 服务调用。就像我说的,可能不是你要找的东西,但至少值得一看。
Also check out jQuery autocomplete.
另请查看 jQuery 自动完成功能。
回答by Homer
jQuery AutoComplete can work with DropDownList
jQuery AutoComplete 可以与 DropDownList 一起使用
回答by Alina Anjum
//just put this script in your page and call the class combobox2 in your dropdownlist
<script type="text/javascript">
(function ($) {
$.widget("custom.combobox2", {
_create: function () {
this.wrapper = $("<span>")
.addClass("custom-combobox2")
.insertAfter(this.element);
this.element.hide();
this._createAutocomplete();
this._createShowAllButton();
},
_createAutocomplete: function () {
var selected = this.element.children(":selected"),
value = selected.val() ? selected.text() : "";
this.input = $("<input style='width:auto;'>")
.appendTo(this.wrapper)
.val(value)
.attr("title", "")
.addClass("custom-combobox2-input ui-widget ui-widget-content ui-state-default ui-corner-left")
.autocomplete({
delay: 0,
minLength: 0,
source: $.proxy(this, "_source")
})
.tooltip({
tooltipClass: "ui-state-highlight"
});
this._on(this.input, {
autocompleteselect: function (event, ui) {
ui.item.option.selected = true;
this._trigger("select", event, {
item: ui.item.option
});
},
autocompletechange: "_removeIfInvalid"
});
},
_createShowAllButton: function () {
var input = this.input,
wasOpen = false;
$("<a>")
.attr("tabIndex", -1)
.attr("title", "Show All Items")
.appendTo(this.wrapper)
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},
text: false
})
.removeClass("ui-corner-all")
.addClass("custom-combobox2-toggle ui-corner-right")
.mousedown(function () {
wasOpen = input.autocomplete("widget").is(":visible");
})
.click(function () {
input.focus();
// Close if already visible
if (wasOpen) {
return;
}
// Pass empty string as value to search for, displaying all results
input.autocomplete("search", "");
});
},
_source: function (request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
response(this.element.children("option").map(function () {
var text = $(this).text();
if (this.value && (!request.term || matcher.test(text)))
return {
label: text,
value: text,
option: this
};
}));
},
_removeIfInvalid: function (event, ui) {
// Selected an item, nothing to do
if (ui.item) {
return;
}
// Search for a match (case-insensitive)
var value = this.input.val(),
valueLowerCase = value.toLowerCase(),
valid = false;
this.element.children("option").each(function () {
if ($(this).text().toLowerCase() === valueLowerCase) {
this.selected = valid = true;
return false;
}
});
// Found a match, nothing to do
if (valid) {
return;
}
// Remove invalid value
this.input
.val("")
.attr("title", value + " didn't match any item")
.tooltip("open");
this.element.val("");
this._delay(function () {
this.input.tooltip("close").attr("title", "");
}, 2500);
this.input.data("ui-autocomplete").term = "";
},
_destroy: function () {
this.wrapper.remove();
this.element.show();
}
});
})(jQuery);
$(function () {
$(".combobox2").combobox2();
$(".combobox2").combobox2({
select: function (event, ui) {
var f = document.getElementById("<%=form1.ClientID%>");
f.submit();
}
});
});
</script>
<asp:DropDownList ID="DDL_Groups4_Assign" runat="server" AppendDataBoundItems="True" AutoPostBack="True" CausesValidation="True" OnSelectedIndexChanged="DDL_Groups4_Assign_SelectedIndexChanged" Width="250px" CssClass="combobox2">
<asp:ListItem Selected="True">Select</asp:ListItem>
</asp:DropDownList>