javascript - 自动完成文本框出错

标签 javascript c# jquery asp.net

我需要一个自动完成文本框。我尝试了以下代码段:

<input type="text" id="tbx_srchByFn"  class="autosuggest" disabled="disabled" value="fieldname" runat="server"
                                   onclick="this.value=''" />

jquery

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css"
        rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            SearchText();
        });
        function SearchText() {
            $(".autosuggest").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        url: "DDL_Home.aspx/GetAutoCompleteData",
                        data: "{'username':'" + document.getElementById('tbx_srchByFn').value + "'}",
                        dataType: "json",
                        success: function (data) {
                            response(data.d);
                        },
                        error: function (result) {
                            alert("Error");
                        }
                    });
                }
            });
        }
    </script>

.cs 文件

    using System.Web.Services;
    [WebMethod]

    public static List<string> GetAutoCompleteData(string username)
    {
        List<string> result = new List<string>();
        using (SqlConnection con = new SqlConnection("constr"))
        {
            using (SqlCommand cmd = new SqlCommand("select DISTINCT Name from Register where Name LIKE '%'+@SearchText+'%'", con))
            {
                con.Open();
                cmd.Parameters.AddWithValue("@SearchText", username);
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    result.Add(dr["Name"].ToString());
                }
                return result;
            }
        }       


    }

当我在文本框中输入内容时,我没有得到输出。但是当我删除 runat="server" 时,它就可以工作了。我只需要在服务器中使用它,以便我可以从服务器端获取文本框值

最佳答案

when I remove runat="server" it works.

我认为回发发生在您的代码中。因此您必须重新绑定(bind) SearchText() 函数。在您的代码中添加以下 javascript

试试这个代码:

var prm_lp = Sys.WebForms.PageRequestManager.getInstance();
//Re-bind for callbacks
prm_lp.add_endRequest(function () {
SearchText();
});

关于javascript - 自动完成文本框出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38911534/

相关文章:

jquery - 即使服务器没有响应,jQuery 中的 "ajax"调用也会触发 "success"函数

javascript - 我们可以使用 jquery 调整图像大小吗?

javascript - ngImgCrop 无法通过模式弹出窗口工作?

javascript - 为 Tesseract OCR 制作训练数据时的 font_properties 是什么?

javascript - javascript 的 'setInterval' 是否可以配置为立即触发,并有一个时间间隔?

c# - 使 ASP.NET WCF 将字典转换为 JSON,省略 "Key"和 "Value"标记

c# - 在不同的类类型上创建方法

c# - 在模型更改时保留数据库内容

javascript - LESS 属性在 Firefox 中加载不一致

javascript - 单击并触发 Ajax 生成的表上的函数