问题描述
我看过几篇文章,但无法使它正常工作。我有一个“保存”按钮设置为LinkButton。当他们单击它时,我希望它触发回发,但又禁用该按钮,因此他们不能多次单击它。我尝试通过javascript,ajax更新面板禁用按钮,但没有任何效果。即使在Javascript中,我也发出了警报,所以我知道它正在进入JS函数,但是它从未禁用该按钮。这是按钮的“工具栏”的结构。关于如何构造它有什么想法?
<div class="navbar-collapse collapse navbar-right" id="main_navbar">
<ul class="nav navbar-nav">
<li id="liNew" runat="server">
<asp:LinkButton ID="lnkbtnNew" CssClass="" runat="server" ToolTip="Click to add a new record" TabIndex="3">
<span class ="fa fa-plus"></span>
<span class=""></span>
<span class="">~New~</span>
</asp:LinkButton>
</li>
<li id="liSave" runat="server">
<asp:LinkButton ID="lnkbtnSave" CssClass="" runat="server" ToolTip="Click to save this record" TabIndex="6">
<!-- OnClientClick="javascript:disableButton(this);" -->
<span class="fa fa-floppy-o"></span>
<span class=""></span>
<span class="">~Save~</span>
</asp:LinkButton>
</li>
</ul>
</div>
也许我只是不知道如何构造UpdatePanel,但是如果将整个Div放入其中,似乎什么也不会发生。
下面尝试了Javascript,然后将属性OnClientClick =“ javascript:disableButton(this);”
添加到了LinkButton。function disableButton(e) {
var x = document.getElementById('lnkbtnSave');
if (x != null) {
x.disabled = true;
alert("disabled");
}
return false;
}
尝试在上面返回true或false,并且没有任何东西会禁用屏幕上的控件。
解决方法
默认行为是,每次回发后LinkButton均为Enabled/Disabled
(与回发之前一样) ,并且您无法在页面刷新时直接使用js每次回发。
因此,如果您始终需要此按钮,则使PostBack禁用它的最简单方法是从服务器端按如下方式进行操作(存在其他方法,但对于cookie,js等较为复杂。但是我建议这样做):
Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
' Be sure the PostBack is caused by Button your lnkbtnSave
If IsPostBack AndAlso Page.Request.Params.Get("__EVENTTARGET").Equals(lnkbtnSave.ID) Then
'here test your scenarios which decides if you have to disable or not your button
If 1 = 1 Then
lnkbtnSave.Enabled = False
End If
End If
End Sub