我有一个搜索按钮绑定到更新面板作为触发器,如下所示:
<asp:Panel ID="CRM_Search" runat="server">
<p>Search: <asp:TextBox ID="CRM_Search_Box" CssClass="CRM_Search_Box" runat="server"></asp:TextBox>
<asp:Button ID="CRM_Search_Button" CssClass="CRM_Search_Button" runat="server" Text="Search" OnClick="SearchLeads" /></p>
</asp:Panel>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="CRM_Search_Button" />
</Triggers>
<ContentTemplate>
/* Content Here */
</ContentTemplate>
</asp:UpdatePanel>
在我的javascript中,我使用jQuery抓取搜索框并绑定其键盘以使搜索按钮单击:
$($(".CRM_Search_Box")[0]).keyup(
function () {
$($(".CRM_Search_Button")[0]).click();
}
);
除非我开始输入太快,否则这种方式非常有效。一旦我打字太快(我的猜测是否比数据实际返回的速度快)整个页面刷新(做回发?)而不仅仅是更新面板。
我还发现,如果我只是快速点击按钮而不是打字,它就会开始做同样的事情。
有没有办法阻止它这样做?可能会阻止第二次请求,直到第一次请求完成为止?如果我没有走上正轨,那么任何人都有其他想法吗?
谢谢,
马特
答案 0 :(得分:3)
做这样的事情会更好,并给他一个呼吸:)
我放置一个计时器,所以你在发送点击之前等待250M。我总是这样做,我从不称呼搜索正确的方式,因为当某人输入一个单词时,实际上程序没有理由一直搜索....
这也可以避免您遇到的问题。
var hTimeOut = null;
$($(".CRM_Search_Box")[0]).keyup(
function () {
if(hTimeOut)
clearTimeout(hTimeOut);
hTimeOut = setTimeout(function() { $($(".CRM_Search_Button")[0]).click(); }, 250);
}
);