的JavaScript位:jQuery的表单验证阿贾克斯之前提交
$(document).ready(function()
{
$('#form').submit(function(e)
{
e.preventDefault();
var $form = $(this);
// check if the input is valid
if(! $form.valid()) return false;
$.ajax(
{
type:'POST',
url:'add.php',
data:$('#form').serialize(),
success:function(response)
{
$("#answers").html(response);
}
});
})
});
HTML位:
<input type="text" name="answer[1]" class="required" />
<input type="text" name="answer[2]" class="required" />
所以这是我想使用的代码。这个想法是在我使用Ajax发送表单之前让所有输入得到验证。我已经尝试了很多版本,但每次我最终都会提交,即使表单没有完全填写。我所有的输入都是“必需”类。任何人都可以看到我做错了什么?
另外,我依赖于基于类的需求,因为我的输入名称是用php生成的,所以我永远无法确定我得到的是什么名称[id]或输入类型。
我在“页面”中显示/隐藏问题。
<input type="button" id="next" onClick="toggleVisibility('form3')" class="next-btn"/>
JS:
function toggleVisibility(newSection)
{
$(".section").not("#" + newSection).hide();
$("#" + newSection).show();
}
当你提交,会发生什么? – 2012-07-13 11:31:27
目前我只是回应了所有$ key => $ value对,即使我只填写了1/4个问题,它们也会在屏幕上弹出。 – Tom 2012-07-13 11:32:31
我无法在最新版本的jquery(v1.7.2)中找到'beforeSubmit'作为$ .ajax的有效选项。您可能想要使用最新版本的jquery。也就是说,Darin的答案是它应该如何完成。也就是说,如果你不能做他建议的事情,那么用Fliespl提出的代码替换beforeSubmit的最后一行。您需要检查'.validate()'的返回值,并相应地继续或取消ajax请求。 – 2012-07-13 11:43:14