AutoComplete不起作用后的Onchange事件

时间:2018-06-14 05:43:10

标签: javascript jquery ajax

我正在尝试在自动完成后触发更改事件。此更改事件将加载一个文本框,其名称对应自动完成选定的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'但是自动完成建议已经绝望了。但是,对于我不想要的每次击键,都会更改'文本框值。

3 个答案:

答案 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 }
                }))
            }
        })
    }
});