如何在自动完成文本框中没有按钮的情况下回发?

Posted

技术标签:

【中文标题】如何在自动完成文本框中没有按钮的情况下回发?【英文标题】:How to postback without a button in an autocomplete textbox? 【发布时间】:2015-11-30 23:48:37 【问题描述】:

我将文本框绑定到 DB,但是当我单击自动完成文本框中的名称并且在文本框中选择了名称时,我不知道如何发送客户的 ID 以在另一个页面中显示他们的数据。

<script type="text/javascript">
    $(document).ready(function () 
        $('#txtSearch').autocomplete(
            source: 'SearchHandler.ashx'
        );
    );

</script>

下面是代码

public class SearchHandler : IHttpHandler

    public void ProcessRequest(HttpContext context) 
    
        string term = context.Request["term"] ?? "";
        List<string> listSearch = new List<string>();
        List<string> IDsearch = new List<string>();

        string cs = ConfigurationManager.AppSettings["dbpath"];
        using (SqlConnection con = new SqlConnection(cs))
        
            SqlCommand cmd = new SqlCommand("searchFriend", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter()
            
                ParameterName="@term",
                Value = term
            );
            con.Open();
            SqlDataReader dr = cmd.ExecuteReader();

            while(dr.Read())
            
                listSearch.Add(dr["UInfo"].ToString());
                IDsearch.Add(dr["UId"].ToString());
            
        

        JavaScriptSerializer js = new JavaScriptSerializer();
        context.Response.Write(js.Serialize(listSearch));  
    

【问题讨论】:

【参考方案1】:

使用选择事件: http://api.jqueryui.com/autocomplete/#event-select

       $('#txtSearch').autocomplete(
            source: 'SearchHandler.ashx',
            select: function( event, ui ) 
               //submit form here
               document.forms[0].submit();
           
        );

如果您需要检索选定的值,请使用关闭事件,然后从文本框中检索值并按照您的意愿使用它:

       $('#txtSearch').autocomplete(
            source: 'SearchHandler.ashx',
            close: function( event, ui ) 

                 var userid = $(this).val();

                 //open new window with customer info
                 window.open('CustomerInfo.aspx?Customer=' + userid);


           
        );

【讨论】:

感谢您的帮助,但我如何才能转到另一个页面以显示有关该人被选中的更多信息 更新帖子。这是你想要完成的吗? 是的,我想在提交后转到另一个页面,通过被选中的人的 ID 我已经按照你说的做了,但是这段代码 'var userid = $(this).val()' 返回了“name”字段。我需要发送客户的 ID。我怎样才能让 ID 发送到另一个页面@Zealander

以上是关于如何在自动完成文本框中没有按钮的情况下回发?的主要内容,如果未能解决你的问题,请参考以下文章

捕获自动完成文本框交叉图标的事件

从文本框中删除自动搜索并在搜索按钮上搜索

如何仅在多个自动完成文本框中的前 2 个字符之后才开始自动完成?

如何从自动完成文本框中单击名称?

处理文本框中的自动完成。不同于按回车

如果文本框中没有文本,jQuery 自动完成返回空列表