javascript确认取消仍然提交表单

javascript confirm cancel still submits form

本文关键字:提交 表单 确认 取消 javascript      更新时间:2023-10-05

我在表单页面上有以下序列,首先它运行captcha,然后验证电子邮件地址,然后询问您是否确定要取消订阅。

除了点击"取消"仍然可以提交表单之外,一切都很好。我不能在提交按钮中使用"onclick",因为它会绕过captcha代码。在我的"如果电子邮件是真的"声明中,我尝试了"return"answers"return:false",但它们都没有阻止表单提交。

谢谢你的帮助。

<form action='<?php echo $_SERVER['PHP_SELF']; ?>' name="unsubscribe" method='post' onsubmit="return checkForm(this);"">
function checkForm(form) { 
var frm = document.unsubscribe;
 if(!form.captcha.value.match(/^'d{5}$/)) {
      alert('Please enter the CAPTCHA digits in the box provided'); 
        form.captcha.focus();           
        return false;
        }   
        if (validEmail(frm.Email.value) != true) {
                alert("Please enter a valid email address");
                frm.Email.focus();
                return false;
        }   
        if (validEmail(frm.Email.value) == true) {
                confirm('Are you sure you want to unsubscribe?');  
                return true;
        }
        else {          
            return false;   
    }
}   
function validEmail(email){
    var status = false; 
    var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+'.[A-Z]{2,4}$/i;
    if (email.search(emailRegEx) == -1) {
    status = false;
}
    else {
    status = true;
}
    return status;  
}   

confirm返回一个布尔值-如果用户单击"确定",则返回true;如果用户单击了"取消",返回false,因此只需返回confirm调用的结果:

if (validEmail(frm.Email.value) == true) {
  return confirm('Are you sure you want to unsubscribe?');
}