我正在尝试在自动完成后触发更改事件。此更改事件将加载一个文本框,其名称对应自动完成选定的ID。自动完成事件工作正常,但更改事件没有响应。
<script>
$('#CustomerSupplyId').autocomplete({
source: function (request, response) {
$.ajax({
type: "GET",
url: "/Purchase/GetSuggestion",
data: { text: request.term },
success: function (data) {
response($.map(data, function (profile) {
return { label: profile.CustomerSupplyNm, value: profile.CustomerSupplyId, id: profile.CustomerSupplyId }
}
))
},
change: function (data) {
response($.map(data, function (profile) {
$("#textbox").val(profile.CustomerSupplyNm);
}))
}
})
}
});
</script>
我在这里做错了什么或我该怎么办? 如果我像这样做成功方法
success: function (data) {
response($.map(data, function (profile) {
return { label: profile.CustomerSupplyNm, value: profile.CustomerSupplyId, id: profile.CustomerSupplyId },
$("#textbox").val(profile.CustomerSupplyNm)
}
))
}
加载了'testbox'但是自动完成建议已经绝望了。但是,对于我不想要的每次击键,都会更改'文本框值。
答案 0 :(得分:0)
jquery的.ajax()方法没有更改属性,
检查文档here。
你应该在ajax调用完成之后监听事件,如:
$.ajax({
type: "GET",
url: "/Purchase/GetSuggestion",
data: { text: request.term },
success: function (data) {
response($.map(data, function (profile) {
return { label: profile.CustomerSupplyNm, value: profile.CustomerSupplyId, id: profile.CustomerSupplyId }
}
))
},
complete: function (data) {
do your dom manipulation here
}
})
答案 1 :(得分:0)
jQuery ajax没有更改属性。因此添加更改属性并没有帮助。
我认为你想要做的就是这样。
...
.autocomplete({
source: {
...
}
change: {
// Do something ...
}
})
...
答案 2 :(得分:0)
在返回
之前,在回复的回调中设置文本框值$('#CustomerSupplyId').autocomplete({
source: function (request, response) {
$.ajax({
type: "GET",
url: "/Purchase/GetSuggestion",
data: { text: request.term },
success: function (data) {
response($.map(data, function (profile) {
$("#textbox").val(profile.CustomerSupplyNm);
return { label: profile.CustomerSupplyNm, value: profile.CustomerSupplyId, id: profile.CustomerSupplyId }
}))
}
})
}
});