jquery表单提交防止默认

Bil*_* VB 2 forms jquery

我正在尝试在着陆页上制作一个简单的电子邮件表单.出于测试目的,我不想实际提交表单.但每次我点击它,它都会阻止我阻止默认的尝试.无论我如何退出submit()函数,它都坚持提交此表单!

$(document).ready( function () {
function validateEmail($email) {
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    if( !emailReg.test( $email ) ) {
        return false;
    } else {
        return true;
    }
}

$("#email_box").click( function () { $(this).val(''); } );

$("#email_form").click(

function(e) {
    var valid = validateEmail($("#email_box").val());


    if (!valid)
    {
        $("#error_msg").fadeIn("slow");
    } else {
        $("#error_msg").style("display", "none");
        $("#email_box").val("Thanks, you'll hear from us soon!").fadeIn("slow");
        //$("#thank_you_msg").fadeIn("slow");
    }

    e.preventDefault();
    return false;   
}

);

});
Run Code Online (Sandbox Code Playgroud)

为什么仍然要发送请求?

对我来说,最奇怪的是,如果表格无效,则不提交.但如果表格实际上有效,则提交!!

gdo*_*ica 7

唯一可能的选项(如果它确实是表单名称...)是您的代码在DOM准备好之前执行的.

把它放在DOM ready回调中:

$(function(){
    $("#email_form").submit(function(e) {       
      e.preventDefault();
    });
});
Run Code Online (Sandbox Code Playgroud)

检查你的处理程序是否会被解雇是一件明智的事情!

$(function(){
    $("#email_form").submit(function(e) {       
      alert('Fired!'); // <<<<<=====
      e.preventDefault();
    });
});
Run Code Online (Sandbox Code Playgroud)