2011-06-21 34 views
0

我想弄清楚如何做动态表单验证与jQuery和jQuery的验证插件。我对jQuery和JS一般都很陌生。动态表单验证(不只是字段)

我已经想出了如何在单击提交(使用submitHandler)时发生验证。不过,我需要通过ajax POST,而不是本地方式。所以我需要防止默认,我似乎不能。对我来说,原生的方式是当你点击提交时,操作发生。我不想让行动发生,因为我试图通过$ .ajax({...});做到这一点。如果我将验证放在$('#form')。live('click',函数(e){...})中,我现在可以通过ajax发布,但是验证不会发生。我已经有了$(document).ready(function(){...};里面的所有东西。我怎样才能获得一个在live('click')方法中验证的动态表单?我试过了当我添加表单时调用validate(),我通过点击一个对象来添加一个完整的表单,并追加到一个子对象。

无论哪种方式(在submitHandler中,或通过使用live('click')) )是我很好,但我似乎无法找出任何一种方式。

希望这是足够的信息,但如果没有,我会很乐意提供更多。下面submitHandler的一个小片段。

$("#form-" + $(this).attr('id')).validate({ 
    submitHandler: function(form) { 
     this.preventDefault(); 
     // My ajax function below (submitForm); 
     submitForm(this); 
     alert('wee'); 
    } 
+0

好的,所以我解决了这个问题。我使用了错误的血腥对象...... 'code submitForm(this)'应该是: 'code submitForm(form);' AFTER我改变了验证行并在验证行之前添加了一行: (code) 'code var form =“#form-”+ $(this).attr('id'); $(形式).validate({ ' 我的最终版本是: '代码 变种形式= “#形式 - ” + $(本).attr( '身份证'); $ (形式).validate( ); { submitHandler } 功能(形式){//只有当有效 submitForm(形式)运行}; ' – AlienResidents

回答

0

你看过jQuery (ajax) form plugin吗?

+0

我认为您的解决方案的工作最好的感谢,我修改了一下,并展示了如何我作为对我的问题的评论,我想要做什么 谢谢 – AlienResidents

+0

没问题,很高兴帮助 – Betamos

2

您没有正确使用submitHandler。试试这个:

$("#myform").validate({ 
     submitHandler: function(form) { 
     form.submit(); 
     } 
}); 

,然后覆盖该表单的提交功能:

$('#myform').submit(function() { 
    $.post(url, $(this).serialize(), function(response) { 
    //do something with the AJAX response 
    }); 

    return false; 
}); 

返回FALSE;最后会阻止默认的表单提交。

+0

您在这里遇到的问题是您没有阅读我的问题(我认为)。知道表单的名字,直到我通过ajax加载它,所以虽然这对静态窗体很有用,但我没有使用静态窗体。 我试过建立$(..)。submit({});每次我添加一行,但这是行不通的。 (code) 'code var form =“#form-”+ $(this).attr('id'); $(form).submit(function(){ submitForm(form); })。验证({0}} {submitHandler:function(form){ form.submit(); } ' – AlienResidents