我有一个带文本框的部分视图
<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根本看不到自动完成功能。
答案 0 :(得分:0)
抱歉,我真的很蠢,并没有意识到自动完成不是主jquery包的一部分,但它是在jquery UI中。