我正在尝试使用ajax post提交表单。在我检查所有表单数据是否正确之前,如果是,表单将被提交。可以告诉我为什么表单没有提交?
HTML:
<form id="formElem" name="formElem" action="" method="post">
<fieldset class="step">
<legend>Account</legend>
<p>
<label for="password">Password</label>
<input type="password" name="uPassword" id="uPassword" value="<?=$uPassword;?>" AUTOCOMPLETE=OFF />
</p>
<p>
<label for="password">Verify Password</label>
<input type="password" name="uVPassword" id="uVPassword" value="<?=$uVPassword;?>" />
</p>
<p class="submit">
<button id="registerButton" type="submit">Register</button>
</p>
</fieldset>
</form>
jQuery代码:
$('#registerButton').bind('click', function () {
if ($('#formElem').data('errors')) {
alert('Please correct the errors in the Form');
return false;
} else {
$(function () {
$("#formElem").on("submit", function (event) {
event.preventDefault();
$.ajax({
url: "somefile.php",
type: "post",
data: $(this).serialize(),
success: function (d) {
alert(d);
}
});
});
}); ///end of func
return true;
}
});
答案 0 :(得分:1)
为什么你有event.preventDefault();在提交功能的开头?这似乎就是问题所在。
答案 1 :(得分:1)
您不需要点击处理程序,您可以在提交处理程序中检查有效性
jQuery(function ($) {
$("#formElem").on("submit", function (event) {
event.preventDefault();
if ($(this).data('errors')) {
return;
}
$.ajax({
url: "somefile.php",
type: "post",
data: $(this).serialize(),
success: function (d) {
alert(d);
}
});
});
})
答案 2 :(得分:0)
您可以点击按钮调用ajax。对于任何错误,它将进入if条件,否则成功提交表单..
$('#registerButton').bind('click', function () {
if ($('#formElem').data('errors')) {
alert('Please correct the errors in the Form');
return false;
}
$.ajax({
url: "somefile.php",
type: "post",
data: $(this).serialize(),
success: function (d) {
alert(d);
}
});
return true;
}); ///end of func
答案 3 :(得分:0)
$(function() { /*code here */ });
在准备好使用DOM时执行该函数。这意味着此函数被分配给onDocumentReady事件,该事件仅发生一次(当页面加载时),并且您在此事件之后分配一个函数,因此永远不要执行。
这个函数是一样的$("#formElem").on("submit", function (event) {});
不要立刻告诉她,但你是否创建了一个关于该事件onSubbmit的句柄。