自动完成在ASP.NET MVC局部视图中不起作用

时间:2016-03-13 11:26:25

标签: jquery asp.net-mvc autocomplete partial-views

我有一个带文本框的部分视图

<input type="text" name="models" id="models" />

在_Layout.csthml的脚本部分,我有脚本

$('#models').on('input propertychange paste', function () { 
    var target = $(this);
    target.autocomplete({
        source: function (request, response) {
            $.post(@Url.Action("MyAction", "MyController"), request, response);
        },
        minLength: 1,
        delay: 1000
    });
});

但是,当我在输入中输入一些文字时没有任何反应,也没有出现错误。我怀疑原因是当加载DOM时#models还不存在。我在考虑使用全局ajaxSuccess函数,但我不确定它是否正确。当我在输入中输入文本并进行递归时,它是否也会被调用?这里的最佳做法是什么?

我尝试使用像这样的ajaxSuccess:

$(document).ajaxSuccess(function() {
        $("#models").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/MyController/MyAction",
                    type: "POST",
                    dataType: "json",
                    data: { searchText: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item.Text, value: item.Text };
                        }));

                    }
                });
            },
        });
    });

但得到了错误

  

未捕获的TypeError:$(...)。autocomplete不是函数

我确信jQuery只在页面上和脚本之前加载一次。 Intellisense根本看不到自动完成功能。

1 个答案:

答案 0 :(得分:0)

抱歉,我真的很蠢,并没有意识到自动完成不是主jquery包的一部分,但它是在jquery UI中。