C# OnClientClick正在停止回发
我有一组ASP.NET控件:C# OnClientClick正在停止回发,c#,javascript,asp.net,.net,C#,Javascript,Asp.net,.net,我有一组ASP.NET控件: <asp:LinkButton ID="Find" ClientIDMode="Static" runat="server" CausesValidation="true" OnClientClick="$('#Find').attr('disabled', 'disabled'); $('#SearchingLabel').show();"> <span>Search</span> <
<asp:LinkButton ID="Find"
ClientIDMode="Static"
runat="server"
CausesValidation="true"
OnClientClick="$('#Find').attr('disabled', 'disabled'); $('#SearchingLabel').show();">
<span>Search</span>
</asp:LinkButton>
<asp:Label ID="SearchingLabel"
ClientIDMode="Static"
runat="server"
Text="Searching..."
style="display: none;" />
搜寻
如您所见,我正在使用OnClientClick
,这样我就可以禁用Find
按钮并显示SearchingLabel
(而且JavaScript可以正常工作,顺便说一句)。非常基本的东西
此外,围绕CausesValidation
属性,我在页面上确实有验证控件,但当前没有验证错误
然而,即使我没有从JavaScript返回false
,页面也没有发回。我甚至尝试返回true代码>但这并没有改变任何事情(这并不令人惊讶,但值得一试)
我期待您的反馈 在回发之前,您似乎正在禁用按钮
您可以在不禁用页面/脚本的情况下尝试页面/脚本:
OnClientClick="$('#SearchingLabel').show();"
如果有效,请尝试短时间延迟:
OnClientClick="setTimeout(function() { $('#Find').attr('disabled', 'disabled'); }, 100); $('#SearchingLabel').show();"
在加载时尝试此js代码
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest);
function BeginRequest(sender, e) {
e.get_postBackElement().disabled = true;
// or your code
}
function EndRequest(sender, e) {
.......
}
导致验证=“true”
?您的页面上有ValidationControl吗?这些可能会导致it@codingbiz,我确实在页面上有验证控件,但没有验证错误。如果您删除控件或正在使用其发回的控件的父控件,也可能会发生这种情况,例如OnClientClick=“$(This).remove()”
将导致相同的问题。好的,因此,删除禁用的
jQuery会起作用并导致它再次回发。但是,setTimeout
会产生意想不到的副作用,因为不仅按钮从不禁用(例如,如果我在服务器端放置线程.Sleep
5秒钟),而且即使我在setTimeout
之前放置该行,搜索标签也不会显示。我没有看到这一行出现。。。你有没有纠正我在代码中的输入错误?我输入了“函数”而不是“函数”,将编辑我的答案。仅此而已。现在真是魅力四射!