jQuery form.validate()回调无法执行($.ajax)
我目前有一个HTML表单的问题。我试图验证HTML5代码中的表单规则,然后使用$.ajax调用将其提交给php脚本进行处理。其目的是确保在提交之前填写各种字段,并使用ajax打印用户存在的任何其他错误、正在使用的电子邮件、web开发人员不清楚等。否则,如果一切正常,则意味着隐藏表单并显示确认消息 使用下面的代码,验证可以正常工作,但是$.ajax调用不能正常工作-表单的默认操作激发intead。但是,如果我注释掉validate函数及其submitHandler及其右括号,表单提交工作正常。这几天来,我一直在用头撞这个,运气都不好。任何人能提供的任何帮助或见解都将不胜感激 这是我正在运行的javascriptjQuery form.validate()回调无法执行($.ajax),jquery,ajax,jquery-validate,Jquery,Ajax,Jquery Validate,我目前有一个HTML表单的问题。我试图验证HTML5代码中的表单规则,然后使用$.ajax调用将其提交给php脚本进行处理。其目的是确保在提交之前填写各种字段,并使用ajax打印用户存在的任何其他错误、正在使用的电子邮件、web开发人员不清楚等。否则,如果一切正常,则意味着隐藏表单并显示确认消息 使用下面的代码,验证可以正常工作,但是$.ajax调用不能正常工作-表单的默认操作激发intead。但是,如果我注释掉validate函数及其submitHandler及其右括号,表单提交工作正常。这几
<script type="text/javascript">
$(document).ready(function() {
$("#Submit").click(function() {
$("#mrf").validate({
submitHandler: function() {
// Begin the submit handler function
var action = $("#mrf").attr('action');
var msg_success = '<p style="font-weight: bold;">Your registration was successful! You should receive a welcome email shortly.</p>';
var form_data = {
Surname: $("#Surname").val(),
First_Name: $("#FirstName").val(),
Other_Names: $("#OtherNames").val(),
Address: $("#Address").val(),
Suburb: $("#Suburb").val(),
State: $("#State").val(),
Postcode: $("#Postcode").val(),
Email: $("#Email").val(),
Username: $("#Username").val(),
INSTEP: $("#INSTEP").val(),
Mobile: $("#Mobile").val(),
Cohort: $("#Cohort").val(),
Academy: $("input:radio[name=Academy]:checked").val(),
University: $("#University").val(),
Program: $("#Program").val(),
NonUni: $("#NonUni").val(),
Mentoring: $("input:checkbox[name=Mentoring]:checked").val(),
CAS: $("input:checkbox[name=CAS]:checked").val(),
Motivational_Speaking: $("input:checkbox[name=MotivationalSpeaking]:checked").val(),
Workshops: $("input:checkbox[name=Workshops]:checked").val(),
Tutoring: $("input:checkbox[name=Tutoring]:checked").val(),
Newsletter: $("input:checkbox[name=Newsletter]:checked").val(),
is_ajax: 1
};
$.ajax({
type: "post",
url: action,
data: form_data,
success: function(response) {
if(response == 'success') {
$("#mrf-form").slideUp('slow', function() {
$("#ajaxResponse").html(msg_success);
});
}
else {
$('#ajaxResponse').html("<p class='error'>" + response + "</p>");
}
}
});
// End the submit handler function
}
});
return false;
});
});
</script>
做这个
e.preventDEfault();
函数中的第一行
$("#Submit").click(function(e){});
此wat至少不会触发默认提交事件;
然后检查$.ajax{
因为如果他们有任何错误,javascript将停止执行,并调用默认的提交函数。您可以使用开发人员工具F12来完成此操作
检查表单数据中的所有值是否正确填写。这不是对您的问题的直接回答,但使用验证插件可能会更容易。我一直在使用这个插件,我非常高兴,它很简单,但可扩展,在客户端看起来很棒,如果您需要它,它具有i18n支持:
话虽如此,如果您坚持使用自定义代码执行此操作,您可能希望submitHandler函数返回false。您已经提交了数据,因此不希望触发该操作。谢谢您的建议!我已使用Firebug调试了脚本,并确定错误发生在submitHandler:函数{我尽可能长时间地执行了,它转到jquery库jquery.event.dispatch.apply eventHandle.elem中的这段代码,参数:未定义;在这一点上,它停止执行,如果我将您的编辑注释掉,则调用默认的提交函数。我不知道如何修复此问题,您认为这是语法错误吗?没有传递任何表单数据。我将继续查找。很高兴它有帮助:这就是您的答案