我有一个包含许多字段和几个复选框的表单。当用户单击“保存”时,如果未选中某个复选框,则会通过“确认”对话框提示他们是否仍要保存表单。如果他们点击没问题,按钮应该正常触发它的事件处理程序,但如果他们点击取消,则不会发生任何事情。
function checkVerification(checkBox)
{
if (!document.getElementById(checkBox).checked)
{
confirm('Worksheet has not been verified. Save anyway?');
}
}
截至目前,无论用户选择何种方式,“保存”按钮的事件处理程序都会触发。任何建议都将不胜感激。
答案 0 :(得分:2)
如果用户拒绝保存,则返回false,如下所示:
return confirm('Worksheet has not been verified. Save anyway?');
如果用户点击“是”,则 confirm()
将返回true
,如果点击“否”,则会false
返回false
指示浏览器停止正常处理事件。
答案 1 :(得分:2)
var ok = confirm('Worksheet has not been verified. Save anyway?');
if (ok) {
// trigger
}
答案 2 :(得分:1)
您需要将确认对话框的返回值与按钮的OnClientClick
相关联,如下所示:
<asp:Button ID="Button1" runat="server" OnClientClick="return confirm('Are you sure?');" ... />
在这种情况下,如果用户点击是,页面将执行回发。如果用户点击否,则会中止回发。
查看评论后,请尝试以下操作:
btnSave.OnClientClick = String.Format("return checkVerify('{0}');", cbVerified.ClientID);
在你的JavaScript函数中:
function checkVerify(checkBox)
{
bool continue = true;
if(!document.getElementById(checkBox).checked) {
continue = confirm('Worksheet not verified. Would you like to save?');
}
return continue;
}
答案 3 :(得分:0)
假设验证绑定到onsubmit事件,您只能从处理程序返回false,并且不会提交表单。
此外,如果您使用的是jQuery,则event.preventDefault()方法也会这样做。
答案 4 :(得分:0)
如果没有看到更多的代码,就很难确切地说出来,但是一个问题可能就是你的if语句。为确保正确的类型检查,请使用===,而不是假设您的值是布尔值。
if(document.getElementById(checkBox).checked === false){...}
您还可以在页面上有多个具有相同ID值的复选框...如果选中一个并且一个不是document.getElementById可能会获得未检查的复选框。
希望有所帮助。