为什么autocomplete textbox textchange事件没有触发?

时间:2014-03-25 11:47:37

标签: asp.net vb.net autocomplete textchanged

我有一个带有ajax jquery自动完成功能的文本框。但是textchange事件没有触发。

<asp:TextBox ID="txtNumber" runat="server" width="98%" OnTextChanged="txtNumber_TextChanged" AutoPostBack="true" ></asp:TextBox>

自动填充功能:

 function QuoteNumber(sender, args) {
        $(function () {
            $("#<%=txtNumber.ClientID %>").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '<%=ResolveUrl("~/Webservice.asmx/GetNumberForAutocomplete") %>',
                        data: "{ 'prefix': '" + request.term + "'}",
                        dataType: "json",
                        type: "POST",
                        async: false,
                        mustMatch: true,
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            response($.map(data.d, function (item) {
                                return {
                                    label: item.split('^')[0],
                                    val: item.split('^')[1]
                                }
                            }))
                        },
                        error: function (response) {

                        },
                        failure: function (response) {

                        }
                    });
                },
                select: function (e, i) {
                    $("#<%=hdnNumber.ClientID %>").val(i.item.val);
                    if (i.item.val == "No Records Found") {
                        $("#<%=hdnNumber.ClientID %>").val(-1);
                        document.getElementById('<%=txtNumber.ClientID%>').value = "";
                        return false;
                    }

                },
                minLength: 0
            }).bind('focus', function () { $(this).autocomplete("search"); });
        });
    }

3 个答案:

答案 0 :(得分:1)

<script type="text/javascript">
$(document).ready(function () {
    $("#<%=txtSearch.ClientID %>").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '<%=ResolveUrl("~/Service.asmx/GetCustomers") %>',
                data: "{ 'prefix': '" + request.term + "'}",
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    response($.map(data.d, function (item) {
                        return {
                            label: item.split('-')[0],
                            val: item.split('-')[1]
                        }
                    }))
                },
                error: function (response) {
                    alert(response.responseText);
                },
                failure: function (response) {
                    alert(response.responseText);
                }
            });
        },
        select: function (e, i) {
            $("#<%=hfCustomerId.ClientID %>").val(i.item.val);
            $("#<%=hfCustomerName.ClientID %>").val(i.item.value);
            $("[id*=btnSubmit]").click();
        },
        minLength: 1
    });

});

答案 1 :(得分:1)

添加到select回调此行:__doPostBack('<%= txtNumber.UniqueID %>', '');

答案 2 :(得分:0)

除了上面的答案,我们还需要在Select:

中使用以下代码
select: function (e, i) {
        $("#<%=hfCustomerId.ClientID %>").val(i.item.val);
        $("#<%=hfCustomerName.ClientID %>").val(i.item.value);
        $("[id*=btnSubmit]").click();
       $("#<%=txtNumber.ClientID %>").val(i.item.value);
      __doPostBack('<%= txtNumber.UniqueID %>', '');
    },