asp.net如何disabled button并执行服务器端方法?
我们有一个提交按钮,当用户点击之后,弹出对话框询问是否继续,选择是,则执行该按钮的onClick事件,否则什么都不做。
一开始我的代码是这样的:
-
//Button
-
<asp:Button ID="btnSubmit" Text="Submit" runat="server"
-
OnClick="btnSubmit_Click" OnClientClick="return confirmClick(this);" />
-
//javascript
-
<script type="text/javascript">
-
debugger;
-
function confirmClick(btn) {
-
var obj = confirm("Do you want to process?");
-
if (obj) {
-
btn.disabled = true;
-
return true;
-
}
-
else {
-
return false;
-
}
-
}
-
</script>
结果Button是disabled了,但是服务器端的btnSubmit_Click方法没有执行。经过google和百度,最后在百度知道找到答案: btn.disabled = true;这里的问题。这里设为true了,就不会传这个button给服务器了。所以这里不能设为true。
那么如果一定要disabled这个button怎么办呢?(这个在实际中是很重要的,避免在响应过程中用户多次点击这个按钮)
弃用OnClientClick,代码改写为:
-
//前台Button代码
-
<asp:Button ID="btnSubmit" Text="Submit" runat="server"
-
OnClick="btnSubmit_Click" />
-
//后台代码
-
protected void Page_Load(object sender, EventArgs e)
-
{
-
btnSubmit.Attributes.Add("onclick",
-
"this.disabled=true; if(confirm('Do you want to process?')){"
-
+Page.ClientScript.GetPostBackEventReference(btnSubmit, "").ToString()
-
+ "} else{this.disabled = false;return false;}");
-
}


