我有一个简单的HTML表单,它在validtion的一部分中使用了ajax。 ajax能够正常工作并正确显示错误,但是如果所有验证都通过了,表单不会提交。基本上,没有任何反应。什么也没有发生在Firebug,什么都不会发生页面本身,等等。这是JavaScript这就是所谓的验证形式:成功的AJAX验证后,HTML表单不会提交
var pass_form = $('#pass_form');
pass_form.submit(valid_pass_sett);
function valid_pass_sett() {
$('.caption_error').remove();
$('input').removeClass('error');
pass_old = $('input[name=pass_old]').val();
pass_new = $('input[name=pass_new]').val();
pass_confirm_new = $('input[name=pass_confirm_new]').val();
if (pass_old === "") {
//display error on form - snipped
return false;
} else if (pass_new === "") {
//display error on form - snipped
return false;
} else if (pass_new != pass_confirm_new) {
//display error on form - snipped
return false;
} else if (pass_new.length < 8) {
//display error on form - snipped
return false;
} else {
$.post("http://www.example.com/ajax/validate.php",{ // async validation
type: 'valid_old_change_pass',
pass_old: pass_old,
pass_new: pass_new
}, valid_pass_combo_callback);
}
return false; // cancel form submission
}
function valid_pass_combo_callback(data) {
if (data == 'valid') {
//only if the form is valid!
pass_form[0].unbind('submit').submit();
//pass_form[0].submit();
} else if (data == "invalid_old") {
//display error on form - snipped
}
else if (data == "invalid_new") {
//display error on form - snipped
}
else {
//display error on form - snipped
}
}
,这里是窗体的基本HTML代码:
<form id="pass_form" class="standard" method="post" action="http://www.example.com/preferences" onsubmit="return valid_pass_sett()">
<fieldset>
<div>
<label for="pass_old">Old password:</label>
<input type="password" id="pass_old" name="pass_old" />
</div>
<div>
<label for="pass_new">New password:</label>
<input type="password" id="pass_new" name="pass_new" />
</div>
<div>
<label for="pass_confirm_new">Confirm new password:</label>
<input type="password" id="pass_confirm_new" name="pass_confirm_new" />
</div>
<div>
<label></label>
<input type="submit" id="pass_submit" name="pass_submit" value="Change password"/>
<input type="reset" id="pass_reset" name="pass_reset" value="Cancel"/>
</div>
</fieldset>
</form>
的脚本一直到pass_form[0].unbind('submit').submit();
一行,但是表单不提交。这里有帮助吗?
你'返回false; //取消表单提交',你想知道为什么表单没有提交? – PeeHaa
您正在发布到为该页面提供服务的相同域,对吗? – gdw2
您是否使用过萤火虫查看提交是否发生?使用萤火虫,您可以查看ajax呼叫,甚至查看您提交的数据。可能,它被编码错了或什么? – Kyle