ASP.NET jQuery自动完成 - 第一次搜索后文本框无响应

5

到目前为止,我在这个网站上没有找到与其他问题相同的问题。 我所经历的是:

我有一个ASP.NET WebForms应用程序,其中包含一个UpdatePanel,其中包含一个搜索区域,在该区域中我有一个用于jQuery自动完成的ASP:TextBox。

$(document).ready(function() {
    $("#tabContainer_tabSearchBreaks_txtSearchName").autocomplete("AutoCompleteEmployee.ashx", { minChars: 3, maxItemsToShow: 10 });
});

这整个过程都很顺利,但是如果我点击一个ASP:Button并处理一些搜索区域的代码,自动完成javascript就不再起作用了。
有什么想法吗?
必须有一种解决方案来重置文本框以调用js代码。
[更新-更多代码] 这是更新按钮为搜索区域执行的操作,与自动完成代码分开:
 try {
     int employeeID;
     string[] namelst = txtSearchName.Text.Split(new string[] {
         " "
     }, StringSplitOptions.None);
     employeeID = int.Parse(namelst[2].Substring(1, namelst[2].Length - 2));
     string name = namelst[0] + " " + namelst[1];
     var breaks = bh.ListBreaksForEmployeeByDate(employeeID, DateTime.Parse(txtFromDate.Text), txtToDate.Text.Length > 0 ? DateTime.Parse(txtToDate.Text).AddDays(1).AddSeconds(-1) : DateTime.Today.AddDays(1).AddSeconds(-1));

     if (breaks.Count() > 0) {
         lblEmployeeTitle.Text = "Breaks for " + name;
         gridSearchBreaks.DataSource = breaks;
         gridSearchBreaks.DataBind();
     }
 } catch {}

希望这能有所帮助。暂时我已将包含此问题的选项卡从用户处隐藏。

处理一些代码以供搜索区域使用。能否详细说明? - Colin
2个回答

10
我认为您正在经历ASP.NET UpdatePanel控件和jQuery的典型问题。问题是:jQuery代码(在您的情况下是自动完成,但可以是任何内容)在页面加载后正常工作,但在部分回发后停止工作。如果是这种情况,则需要了解有关在UpdatePanel控件中使用jQuery的几件事情。
首先,在$(document).ready中定义的所有事件绑定在第一次部分回发后停止工作(我假设您的按钮单击会导致部分回发)。这只是ASP.NET的工作方式。那么如何解决它?好吧,有几种方法可以解决这个问题。一个典型的建议是用ASP.NET AJAX自己的pageLoad事件替换$(document).ready。这可能解决一个问题,但很可能会引起更多问题,因为现在您将在每次部分回发时绑定事件,从而导致单个事件处理程序的重复执行。您可以通过在执行任何绑定之前为选择器调用unbind来解决一些问题。对于简单的事件绑定,您可以继续使用$(document).ready和live函数(而不是click、hover等)。
我没有在UpdatePanel中使用过jQuery插件,所以无法确定您需要做什么,但一旦您了解到发生了什么,就不难找到正确的方法。要了解更多关于此问题和可能的解决方案,请阅读Dave Ward的文章$(document).ready()和pageLoad()不同!(该文章包括几个示例)。

1

我建议您使用像Firebug这样的工具,它可以帮助您准确定位错误发生的位置。您可以监视ajax请求,以查看它是否已停止发出请求,如果它们全部完成,以及您收到的响应。您还可以在运行时使用它来调试javascript,并且它通常会给您提供您可能没有注意到的错误消息。听起来就像是您目前需要的工具。


我一定会尝试使用Firebug并看看我能得到什么。谢谢。 - kntcnrg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接