自动完成文本框不显示结果在点击文本框

本文关键字:文本 结果 显示 | 更新日期: 2023-09-27 18:11:21

我有一个autocomplete textbox,它过滤了我想要搜索的内容。但是现在我想要的是

如果用户不输入任何东西到textbox,只是点击textbox。它应该显示所有的结果。这可能吗?

下面是我的代码。

$(document).ready(function () {
        SearchText();
    });
    function SearchText() {
        $("#txt712").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Frm_Agreement_Master.aspx/GetAutoCompleteData",
                    data: "{'username':'" + extractLast(request.term) + "'}",
                    dataType: "json",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
            },
            focus: function () {
                return false;
            },
            select: function (event, ui) {
                var terms = split(this.value);
                terms.pop();
                terms.push(ui.item.value);
                terms.push("");
                this.value = terms.join(", ");
                return false;
            }
        });
        $("#txt712").bind("keydown", function (event) {
            if (event.keyCode === $.ui.keyCode.TAB &&
                $(this).data("autocomplete").menu.active) {
                event.preventDefault();
            }
        })
        function split(val) {
            return val.split(/,'s*/);
        }
        function extractLast(term) {
            return split(term).pop();
        }
    }

也找到我从哪里得到的参考链接。

参考链接

服务器端代码

[WebMethod]
public static List<string> GetAutoCompleteData(string username)
{
    List<string> result = new List<string>();
    using (OracleConnection ObjPriCon = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString()))
    {
        using (OracleCommand cmd = new OracleCommand("select distinct survey_area_7_12 FROM xxcus.xxacl_pn_farming_mst WHERE survey_area_7_12 LIKE '%' || :searchtext || '%'", ObjPriCon))
        {
            ObjPriCon.Open();
            cmd.Parameters.AddWithValue(":searchtext", username.ToLower());
            OracleDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    result.Add(dr["survey_area_7_12"].ToString());
                }
            }
            return result;
        }
    }
}

自动完成文本框不显示结果在点击文本框

在Server代码中检查搜索字符串是否为空并相应触发查询

    public static List<string> GetAutoCompleteData(string username)
    {
    List<string> result = new List<string>();
    using (SqlConnection con = new SqlConnection("Data Source=SureshDasari;Integrated Security=true;Initial Catalog=MySampleDB"))
    {
     **//check if user name is not null**
    if(null != username){
    using (SqlCommand cmd = new SqlCommand("select DISTINCT UserName from UserInformation where UserName LIKE '%'+@SearchText+'%'", con))}
    else{
      using (SqlCommand cmd = new SqlCommand("select UserName from UserInformation, con))}
}
    {
    con.Open();
    cmd.Parameters.AddWithValue("@SearchText", username);
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    result.Add(dr["UserName"].ToString());
    }

您可以使用"Focus"事件来完成此操作。

.focus(function () {
    $(this).autocomplete("search");
});

完整代码如下。

    $("#txt712").autocomplete({
        source: function (request, response) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "Frm_Agreement_Master.aspx/GetAutoCompleteData",
                data: "{'username':'" + extractLast(request.term) + "'}",
                dataType: "json",
                success: function (data) {
                    response(data.d);
                },
                error: function (result) {
                    alert("Error");
                }
            });
        },
        focus: function () {
            $(this).autocomplete("search"); //New Code
        },
        select: function (event, ui) {
            var terms = split(this.value);
            terms.pop();
            terms.push(ui.item.value);
            terms.push("");
            this.value = terms.join(", ");
            return false;
        }
    });