我正在使用来自http://bassistance.de/jquery-plugins/jquery-plugin-validation/
的JQuery验证器我编写了我需要的JQuery,它正确验证了但是我的提交功能的最后一部分无法正常工作。
$("#commentForm").validate({
rules: {
email_options_name: {
required: true
},
email_options_company: {
required: true
},
email_options_country: {
required: true
},
email_option_email: {
required: true,
email: true
},
check_options: {
required: true,
minlength: 1
}
},
});
$("#commentForm").submit(function(){
var valid = $("#commentForm").valid();
if (valid) {
$.post('scripts/process_email_initial_form.php',$(this).serialize(), function(o) {
location.reload();
}, 'json');
} else {
$('.full-error').show();
}
return false;
});
$.extend($.validator.messages, {
required: "!",
email: "!"
});
}
当提交有效时,脚本process_email_initial_form.php
被调用并正确处理(从查看firebug),如果不是div确实显示。问题是当脚本运行完毕后location.reload();
没有调用。理想情况下,我想直接找到成功页面,但这也不起作用。
我试图在process_email_initial_form.php
的末尾添加一个php标头函数,但这也不起作用。
非常感谢任何帮助。
答案 0 :(得分:3)
根据docs,submitHandler回调是“经过验证后通过Ajax提交表单的正确位置。”
$("#commentForm").validate({
rules: {
// your rules here
},
submitHandler: function(form) {
// example below uses the 'form' plugin
// http://www.malsup.com/jquery/form/#api
$(form).ajaxSubmit({
success: function(){
window.location.href="newPage.php"
}
});
}
});
答案 1 :(得分:0)
您只检查过表单是否有效。通过检查这将仅返回布尔值,它不会设置错误消息。在显示之前,您需要将错误分配给$('。full-error')。
尝试
$("#commentForm").validate();
答案 2 :(得分:0)
您是否尝试使用done
事件?
$.post(
'scripts/process_email_initial_form.php',
$(this).serialize(),
function(o) {
console.log('success');
},
'json'
).done(function(o){
window.location.replace("success.php");
});
ajax页面中的PHP标头不会将当前页面重定向到成功页面。它只会使你的ajax页面重定向到定义的标题。
您可以尝试使用jquery提交表单,而不是使用window.location.replace
。
$("#commentForm").submit(function(){
var valid = $("#commentForm").valid();
if (valid) {
$.post(
'scripts/process_email_initial_form.php',
$(this).serialize(),
function(o) {
console.log('success');
},
'json')
.done(function(o) {
$(this).attr('action', 'success.php');
return true;
});
} else {
$('.full-error').show();
return false;
}
});
OR
$("#commentForm").submit(function(){
var valid = $("#commentForm").valid();
if (valid) {
$.post(
'scripts/process_email_initial_form.php',
$(this).serialize(),
function(o) {
$(this).attr('action', 'success.php');
return true;
},
'json');
} else {
$('.full-error').show();
return false;
}
});