禁用按钮不会在 UpdatePanel 中提交回发
Disabled button doesn't submit postback in UpdatePanel
我的 ASP.NET
页面上 UpdatePanel
内有一个按钮。这是我的 UpdatePanel
<asp:UpdatePanel ID="UpdateToolbar" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table>
<tr>
<td>
<div id="divPDFBtn">
<asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" ToolTip="Click to export report to PDF"
Width="100px" Text="Print to PDF" OnClientClick="if(PDFClick()) {return true;} else {alert('2');}" />
</div>
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnPrint" />
</Triggers>
</asp:UpdatePanel>
当我尝试禁用按钮 OnClientClick
时,它不起作用 PostBack
这是我的 PDFClick()
函数的例子
// Works (does post back and code behind executes))
<script type="text/javascript">
function PDFClick() {
document.getElementById("btnPrint").value = "Working...";
return true;
};
</script>
// Doesn't work (JS executes, but code behind didn't execute)
<script type="text/javascript">
function PDFClick() {
document.getElementById("btnPrint").value = "Working...";
document.getElementById("btnPrint").disabled = true;
return true;
};
</script>
这是我的后台代码。我需要在后面做一些事情并在完成后打开新的 window:
protected void btnPrint_Click(object sender, EventArgs e)
{
Response.Write("<script>");
Response.Write(String.Format("window.open('{0}','_blank')", ResolveUrl("PrintPage.aspx")));
Response.Write("</script>");
}
请告诉我如何禁用我的按钮并找到后面的代码。
您可以使用 setTimeout
异步禁用按钮:
<script type="text/javascript">
function PDFClick(btnPrint) {
btnPrint.value = "Working...";
setTimeout(function() { btnPrint.disabled = true; }, 10);
return true;
};
</script>
通过在 OnClientClick
中使用 this
关键字传递对按钮元素的引用,可以从 PDFClick
中删除对 document.getElementById
的调用:
OnClientClick="if (PDFClick(this)) { return true; } else { alert('2'); }"
在按钮上添加ClientIDMode="Static"
<asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" ToolTip="Click to export report to PDF" Width="100px" Text="Print to PDF" OnClientClick="if(PDFClick()) {return true;} else {alert('2');}" ClientIDMode="Static" />
我的 ASP.NET
页面上 UpdatePanel
内有一个按钮。这是我的 UpdatePanel
<asp:UpdatePanel ID="UpdateToolbar" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table>
<tr>
<td>
<div id="divPDFBtn">
<asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" ToolTip="Click to export report to PDF"
Width="100px" Text="Print to PDF" OnClientClick="if(PDFClick()) {return true;} else {alert('2');}" />
</div>
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnPrint" />
</Triggers>
</asp:UpdatePanel>
当我尝试禁用按钮 OnClientClick
时,它不起作用 PostBack
这是我的 PDFClick()
函数的例子
// Works (does post back and code behind executes))
<script type="text/javascript">
function PDFClick() {
document.getElementById("btnPrint").value = "Working...";
return true;
};
</script>
// Doesn't work (JS executes, but code behind didn't execute)
<script type="text/javascript">
function PDFClick() {
document.getElementById("btnPrint").value = "Working...";
document.getElementById("btnPrint").disabled = true;
return true;
};
</script>
这是我的后台代码。我需要在后面做一些事情并在完成后打开新的 window:
protected void btnPrint_Click(object sender, EventArgs e)
{
Response.Write("<script>");
Response.Write(String.Format("window.open('{0}','_blank')", ResolveUrl("PrintPage.aspx")));
Response.Write("</script>");
}
请告诉我如何禁用我的按钮并找到后面的代码。
您可以使用 setTimeout
异步禁用按钮:
<script type="text/javascript">
function PDFClick(btnPrint) {
btnPrint.value = "Working...";
setTimeout(function() { btnPrint.disabled = true; }, 10);
return true;
};
</script>
通过在 OnClientClick
中使用 this
关键字传递对按钮元素的引用,可以从 PDFClick
中删除对 document.getElementById
的调用:
OnClientClick="if (PDFClick(this)) { return true; } else { alert('2'); }"
在按钮上添加ClientIDMode="Static"
<asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" ToolTip="Click to export report to PDF" Width="100px" Text="Print to PDF" OnClientClick="if(PDFClick()) {return true;} else {alert('2');}" ClientIDMode="Static" />