我正在尝试在登陆页面上制作一个简单的电子邮件表单。出于测试目的,我不想实际提交表单。但每次我单击它时,它都会阻止我尝试阻止默认设置。无论我如何退出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;
}
);
});
为什么请求仍在发送?
确实,对我来说最奇怪的事情是,如果表单无效,它就不会提交。但如果表单实际上有效,它就会提交!!
最佳答案
唯一可能的选择(如果这确实是表单名称...)是在 DOM 准备好之前执行您的代码。
将其放入 DOM 就绪回调中:
$(function(){
$("#email_form").submit(function(e) {
e.preventDefault();
});
});
检查你的处理程序是否被解雇是一件明智的事情!
$(function(){
$("#email_form").submit(function(e) {
alert('Fired!'); // <<<<<=====
e.preventDefault();
});
});
关于jquery表单提交防止默认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9793979/