我有一个通过AJAX验证的表单,问题是在ajax给出响应1
之后,它应该将相同的表单提交到同一页面。
由于我使用了$('#bigform').submit()
,因此不允许我将表单提交给驻留在同一页面上的PHP。
$(document).ready(function() {
$('#bigform').submit(function(event) {
var captcha_checks = $('#password_again').val();
$(this).validate();
if (!$(this).valid())
return false;
$.ajax({
type: 'post',
url: 'http://trigma.com/mobile-app-development/verify_captcha.php',
data: { captcha_checks: captcha_checks },
dataType: 'html',
success: function(data) {
if (data == 1) {
$('#bigform').submit();
}
if (data == 2) {
$('#captcha_error').text("Invalid Captcha! Please fill captcha carefully");
}
}
});
event.preventDefault();
});
});
答案 0 :(得分:2)
您可以添加如下布尔变量:
$(document).ready(function() {
var first = true;
$('#bigform').submit(function(event) {
if(first){
var captcha_checks = $('#password_again').val();
$(this).validate();
if (!$(this).valid())
return false;
$.ajax({
type: 'post',
url: 'http://trigma.com/mobile-app-development/verify_captcha.php',
data: { captcha_checks: captcha_checks },
dataType: 'html',
success: function(data) {
if (data == 1) {
first = false;
$('#bigform').submit();
}
if (data == 2) {
$('#captcha_error').text("Invalid Captcha! Please fill captcha carefully");
}
}
});
}
else
{
$('#bigform').submit();
}
event.preventDefault();
});
});
答案 1 :(得分:1)
这是一件奇怪的事情,但是如果你必须使用一个单独的函数,比如:
$(document).ready(function(){
function onSubmit(theElement){
var captcha_checks = $('#password_again').val();
theElement.validate();
if (!theElement.valid()) return false;
$.ajax({
type: 'post',
url: 'http://trigma.com/mobile-app-development/verify_captcha.php',
data: {captcha_checks:captcha_checks},
dataType: 'html',
success: function(data) {
if(data == 1){
onSubmit(theElement);
}
if(data == 2){
$('#captcha_error').text("Invalid Captcha! Please fill captcha carefully");
}
}
});
event.preventDefault();
}
$('#bigform').submit(function(event){
onSubmit($(this));
});
});
</script>
答案 2 :(得分:0)
为什么不为 SUBMIT 按钮设置click
事件处理程序呢?
$('#submit-btn').click(function(event){
event.preventDefault();
var form = $(this).closest('form');
$(form).validate();
if (!$(form).valid())
return false;
//...your AJAX call...
if(data == 1){
form.submit();
}
//...
});