jquery - 你知道为什么为我的下拉框引入 jquery ui 自动完成功能也会改变我的列表框吗?

标签 jquery asp.net-mvc jquery-ui listbox jquery-autocomplete

我正在尝试更改我的组合框以使用自动完成功能,因此我利用 the code listed here (这非常适合我的下拉菜单)

问题是我也在同一页面上有一个包含以下代码的列表框:

<%= Html.ListBox("Cars", Model.BodyParts.Select(
                    x => new SelectListItem {
                        Text = x.Name,
                        Value = x.Id,
                        Selected = Model.CarsSelected.Any(y => y.Id == x.Id)
                    }
               ))%>

看来 jquery ui 代码也将其更改为自动完成下拉列表(而不是将其保留为多选列表框)

知道如何防止这种情况发生吗?

我实际上只是使用确切的代码 on this page

<script type="text/javascript">
(function($) {
    $.widget("ui.combobox", {
        _create: function() {
            var self = this;
            var select = this.element.hide();
            var input = $("<input>")
                .insertAfter(select)
                .autocomplete({
                    source: function(request, response) {
                        var matcher = new RegExp(request.term, "i");
                        response(select.children("option").map(function() {
                            var text = $(this).text();
                            if (!request.term || matcher.test(text))
                                return {
                                    id: $(this).val(),
                                    label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + request.term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"),
                                    value: text
                                };
                        }));
                    },
                    delay: 0,
                    select: function(e, ui) {
                        if (!ui.item) {
                            // remove invalid value, as it didn't match anything
                            $(this).val("");
                            return false;
                        }
                        $(this).focus();
                        select.val(ui.item.id);
                        self._trigger("selected", null, {
                            item: select.find("[value='" + ui.item.id + "']")
                        });

                    },
                    minLength: 0
                })
                .addClass("ui-widget ui-widget-content ui-corner-left");
            $("<button>&nbsp;</button>")
            .insertAfter(input)
            .button({
                icons: {
                    primary: "ui-icon-triangle-1-s"
                },
                text: false
            }).removeClass("ui-corner-all")
            .addClass("ui-corner-right ui-button-icon")
            .position({
                my: "left center",
                at: "right center",
                of: input,
                offset: "-1 0"
            }).css("top", "")
            .click(function() {
                // close if already visible
                if (input.autocomplete("widget").is(":visible")) {
                    input.autocomplete("close");
                    return;
                }
                // pass empty string as value to search for, displaying all results
                input.autocomplete("search", "");
                input.focus();
            });
        }
    });

})(jQuery);

$(function() {
    $("select").combobox();
});
</script>

最佳答案

我猜测您的 JQuery 选择器(您的问题中未提供)正在抓取页面上的所有下拉菜单。您应该考虑使其更具体,最有可能通过 ID 引用元素。 JQuery 文档中有很多很好的示例:

http://api.jquery.com/category/selectors/

关于jquery - 你知道为什么为我的下拉框引入 jquery ui 自动完成功能也会改变我的列表框吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560316/

相关文章:

javascript - 具有远程数据的 jQuery AutoComplete 获取错误的 url

c# - 与区域同名的 Controller - Asp.Net MVC4

asp.net-mvc - 如何将 HTML5 表单操作链接到 ASP.NET MVC 4 中的 Controller ActionResult 方法

javascript - jQuery - 动态添加按钮单击不起作用

javascript - jquery如何在href中添加onclick

javascript - jQuery 中的 addEventListener

javascript - 水平循环轮播 javascript/jquery

javascript - 当到达页面顶部时,JQuery 将文本元素添加到 Nav

asp.net-mvc - 在ASP.NET中基于帐户的查找

javascript - JS/jQuery TypeError : jQuery(. ..).datepicker 不是函数