【问题标题】:How to fire Text Change Event Of Autocomplete Textbox?如何触发自动完成文本框的文本更改事件?
【发布时间】:2023-03-21 01:01:01
【问题描述】:

我有一个带有自动完成功能的文本框。 从自动完成列表中选择数据,然后在 Enter key press 上触发 文本更改事件。 但我想在选择数据时触发文本更改事件。

function abc(sender, args) {
    $(function () {
        $("#<%=txtNumber.ClientID %>").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<%=ResolveUrl("~/Webservice.asmx/abc") %>',
                    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"); });
    });
}

【问题讨论】:

  • 我确实有同样的问题。
  • 在 asp.net 的情况下,将“文本框”中的 autopostback(Properties) 更改为 true,在 Windows 的情况下,将按键事件赋予自动完成列表而不是文本框。
  • @gkrishy:我已经尝试将 autopost back 属性设为 true,但没有成功。
  • 你试过 ajax autocompleteextender 吗?如果没有,请向我们展示您的尝试。

标签: asp.net vb.net


【解决方案1】:

当您选择自动完成值时,文本框 KeyDown 事件会以 keyCode 13 触发。

要检测列表中的项目何时被选中,您可以执行以下操作:

Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If e.KeyCode = 13 Then
        MsgBox("Autocomplete value selected")
    End If
End Sub

【讨论】:

    【解决方案2】:

    如果你觉得舒服,试试这行代码。

    aspx 页面:

     <asp:TextBox ID="txtNumber" runat="server" style="font-weight: 700" 
                    AutoPostBack="True" ontextchanged="txtNumber_TextChanged"></asp:TextBox>
                <asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
                  <asp:AutoCompleteExtender ServiceMethod="SearchCustomers" 
    MinimumPrefixLength="1"
    CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
    TargetControlID="txtNumber"
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
    

    代码背后:

    [System.Web.Script.Services.ScriptMethod()]
    [System.Web.Services.WebMethod]
    public static List<string> SearchCustomers(string prefixText, int count)
    {
       List<string> customers = new List<string>();
       customers.Add(Your Values); // Your auto complete values
    }
    

    您也可以绑定数据库值。如果我混淆了你的想法,请告诉我。

    【讨论】:

    • 或许可以说您所指的自动完成扩展器是 AjaxControlToolkit 的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2014-05-03
    • 1970-01-01
    • 2010-11-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多