表单,提交前确认confirm(),



表单,提交前确认confirm(),

比如下面这个按钮

<input type="button" value="删除" OnServerClick="fileDel_ServerClick" runat="server" />

作用是按了后删除什么东西,想给他加个确认,即按了按钮后跳出一个确认框,确定后才执行,否则不执行。

于是按照网上的办法给他加个属性:
onclick="return confirm('确定删除?');"

最后生成的HTML代码如下:
<input onclick="return confirm('确定删除文章?'); __doPostBack('ctl07','')" type="button" value="删除" />

但是没有作用,无论是确认还是取消,后面的__doPostBack()部分都没执行。

又在网上查了一下文章,说
onclick="return confirm('确定删除?');"
这样不行,必须:
onclick="if(confirm('确定删除?')){}else{return false;};"
必须这样。

我试了一下,确实成功了。但是总感觉
onclick="if(confirm('确定删除?')){}else{return false;};"
又长又臭,于是做了个js函数:
function confirmX(xxx) {
if(confirm(xxx)){}else{return false;}
};
给相应的按钮加入这个属性:
onclick="confirmX('确定删除?');"

结果这样,又出问题了,无论是确认还是取消,后面的__doPostBack()部分都会执行。

我的问题是,有没有一个简单优雅的办法解决这个问题?每个需要确定的按钮都加一个形如
onclick="if(confirm('确定删除?')){}else{return false;};"
的属性显得很臃肿,把它做成js函数后又没法用,或者是我函数写错了?
分享到:

 
2010-08-12 08:22 网友采纳
 
onclick="confirmX('ctl07','');"

function confirmX(a,b) {
if(confirm("确定删除么?")){
    __doPostBack(a,b)
}
else{return false;}
}

为控件添加onclientclick事件  触发return confirm 
为OnClientClick=“return confirm('确定?')”

如果想更方便,那就在页面基类中重写初始化事件,遍历page控件中的button控件,为该控件注册确认删除事件
评论 | 给力0不给力0

2010-08-12 09:03 冯益斌 | 十级
首先最好把input换成asp:button控件,这样可以同时使用onclick(服务器端事件)和onclientclick(客户端事件)

<asp:Button ID="btnDelete" runat="server" Text="删除" onclick="btnDelete_Click"  OnClientClick="return confirm('确认要删除?')"/>

参考资料: http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.button.onclientclick(VS.80).aspx

评论 | 给力1不给力0

2010-08-12 17:27 wangbenson | 五级
脚本定义一个类是myconfirm窗体

添加连个方法show,用于显示提示窗口
添加两个事件afterConfirm, afterCancel

脚本调用onclick的时候,创建myconfirm一个实例,并且绑定他的afterConfirm, afterCancel这两个事件,就是两个函数而已。

即可搞定你的问题吧

或者用现成的脚步库