我正在开发类似设备的产品的 Web GUI。
我有一个工作正常的 HTML 表单:它显示带有复选框的列表,用户检查其中的一些并单击提交表单的“删除”按钮。服务器获取 POST,删除项目,并刷新页面。一切都好。
需要添加“您确定吗?” 确认表格。如果我添加一个呼叫
confirm("are you sure?");
作为 FORM 标记中的 onsubmit 方法,或提交按钮标记中的 onclick,它工作正常,但使用了丑陋的浏览器原生确认对话框。
在产品的其他地方,我们有一个很好的自定义 CSS 样式的确认对话框,我想使用它,但它的工作方式如下:在适当的位置,您调用
myConfirm("Confirm", "Are you sure", "Yes", "No", confirmCallback);
这会建立一个点击掩码,自定义一个对话框,居中并显示它,然后返回 FALSE 并且表单不提交。
稍后当用户决定时,如果他们按下“是”,它会调用 confirmCallback 函数。在另一个基于 Ajax 的产品页面中,它收集信息、创建一个 postBody 并使用 Prototype 的 Ajax 对象来发布它,一切都很好。(如果“否”,则删除对话框和点击掩码,然后继续。)
在这个更简单的页面上,使用纯 HTML 表单,我有一个如下所示的 confirmCallback 函数:
var confirmCallback = function() {
document.myForm.submit();
}
并且它触发 OK,但是当提交表单时,已经单击了删除按钮,并且自定义确认抑制提交返回的 false。相反,这被认为是新提交,并且实际上并未单击删除按钮,因此根据 W3.org 的 HTML 4 标准第 17.13.3 节,它不被视为“成功”。服务器获取数据,没有删除按钮,说“我知道了,但我不知道你想让我用它做什么”,除了提供下一页之外什么都不做。
如果你读到这里,谢谢,这是我的实际问题。我怎样才能在我的confirmCallback javascript函数中以跨浏览器的方式触发删除按钮,变为“成功”并与其余数据一起提交?