2011-12-26 3 views
7

je forme suivante:soumettre le formulaire après validation jquery

<form id="form" action="comments.php" method="post"> 
    <ul> 
    <li><div class="formbox_titles">Name</div><input type="text" name="name" class="required comm_input" /></li> 
    <li><div class="formbox_titles">Email</div><input type="text" name="email" class="required comm_input"/></li> 
    <li><div class="formbox_titles">Message</div><textarea name="message" class="required comm_text"></textarea></li> 
    <li><input type="submit" value="Submit"></li> 
    </ul> 
</form> 

et suivant JQuery pour formulaire de soumission:

target: '#preview', 
    success: function() { 
    $('#formbox').slideUp('fast'); 
} 

Maintenant, le problème est que j'ai également la validation du formulaire Code JQuery

$().ready(function() { 
    // validate comment form 
    $("#form").validate({ 
    }); 
}); 

Les deux fonctionnent très bien et forment une fenêtre d'avertissement que les trois champs ne peuvent pas être vides mais la date à l'intérieur du formulaire est soumis dans la base de données de toute façon. Im en utilisant le code suivant pour la validation de formulaire http://bassistance.de/jquery-plugins/jquery-plugin-validation/ Donc la question est de savoir comment ajouter premier jquery à l'intérieur de la seconde, donc d'abord sera exécuté une fois les champs obligatoires sont remplis?

J'espère que quelqu'un va vous aider. Merci.

Répondre

3

Je ne sais pas quoi que ce soit au sujet de votre plug-in de validation, mais normalement u pourrait utiliser cette paix code

<script> 

    $("form").submit(function() { 
     if (validationIsTrue()) { 
     return true; 
     } 
     else { 
     return false; 
     } 
    }); 
</script> 

Vous devez faire votre validation puis retourner true/false la fonction d'envoi du formulaire. Si le plugin ne retourne une valeur bool, vous pouvez essayer quelque chose comme ceci:

$("form").submit(function() { 
    return $(this).validate({ .... }); 
}); 
8

De votre exemple, je ne suis pas clair sur le flux de contrôle de votre page, mais je suppose que vous appelez la méthode submit() quelque part. Après avoir validé le formulaire et avant de le soumettre, vérifiez sa validation avec la méthode valid(). Votre code devrait ressembler à ceci:

$("#form").validate(); 
if ($('#form').valid()) 
    $('#form').submit(); 
2

Quand vous dites que la « date dans le formulaire est soumis » qui n'a pas de sens pour moi parce que dans vos extraits de code, je ne vois rien appelé « date ».

Je l'ai utilisé le .validate() Plugin largement ... Ce que je peux vous dire qui peut aider est que le validate plugin vous utilisez a une fonction de submitHandler que vous pouvez utiliser ...

// validate comment form 
$("#form").validate({ 
submitHandler : function(form) { 
    //do something here 
    form.submit(); 
} 
}); 

La propriété submitHandler est appelée uniquement si toutes les règles de validation sont satisfaites. A savoir dans votre cas, vous avez trois champs avec "requis" sur eux, ce qui signifie que ce formulaire ne sera pas soumis, sauf si les trois champs ont une valeur. Avec cela, je peux vous assurer avec certitude que les informations fournies n'ont rien pour indiquer le problème que vous décrivez. Fournir des informations plus nombreuses et de meilleure qualité nous aidera à déterminer ce qui ne va pas.

9

Si vous souhaitez soumettre le formulaire manuellement, vous devez ignorer l'événement lié jQuery. Vous pouvez le faire dans l'une de ces façons:

$('#form_id')[0].submit(); 

ou

$('#form_id').get(0).submit(); 

[0] ou get (0) vous donne l'objet DOM au lieu de l'objet jQuery.

+1

Merci de l'avoir signalé ...Je cherchais cela parce que j'ai un événement lié à la soumission du formulaire, mais avant que j'envoie le formulaire, je dois faire une requête AJAX et si la condition est vraie, je soumets le formulaire et là j'ai besoin du contournement. +1 –

Questions connexes