我有一个asp.net 4网站,在用户从数据库中删除对象作为基于客户端的确认之前,我使用javascript的confirm()方法。使用IE6-10,Firefox,Chrome和Safari,效果很好。我点击取消,它停止页面加载。但是我在使用IE11的用户控件上使用它时遇到了问题。
usercontrol加载一个datagrid,它有一个链接按钮,让服务器调用一个删除存储过程。
使用IE11,会打开确认弹出窗口,但是如果我单击取消按钮或窗口上的x不会停止页面发布并在服务器中调用删除命令。我尝试了所有我能想到的东西,但它总是通过并将页面读取为有效。
在ItemDataBound后面的代码中我们有这个......
DeleteButton.CommandArgument = ac.ID.ToString(); //set the id so we know what to delete
DeleteButton.Attributes.Add("onclick", "Sure(event)");
这会将javascript附加到图像按钮。
然后在包含javascript的文件中,我们有以下代码......
function Sure(evt){
var ans = confirm("Are you sure you want to delete? \n\nPress OK to continue or Cancel to stop.");
if(!ans){
var e = (window.event)? window.event:evt;
e.returnValue = false;
return false;
}
}
调试,它将值设置为false并在我按下取消按钮时返回它们,但这并不像其他浏览器那样停止回发。它直接呼吁数据库删除它。
知道为什么IE11在确认被取消后不会停止回发?
答案 0 :(得分:1)
如果我听你说得对,你的意思是......?
"onclick", "return Sure(event)"
...
function Sure(evt){
var ans = confirm("Are you sure you want to delete? \n\nPress OK to continue or Cancel to stop.");
if(!ans){
var e = (window.event)? window.event:evt;
e.returnValue = false;
return false;
} else {
return ans;
}
}
根据我的理解,你的脚本不应该在任何地方工作,甚至IE11。如果你没有"返回"函数的值,你只是执行函数而忽略了确认对话框返回的事实" false"。