2013-08-21 4 views
0

J'utilise la bibliothèque de validation de formulaire Jquery:JQuery forme conflit de validation

jquery-validate.js

Lorsque l'utilisateur soumet le formulaire I glisser vers le bas une div qui a une case à cocher qui doit être chekced afin de procéder:

if(!$('#agreeConfirm').is(':checked')){ 

    alert('Please tick to agree to our terms and conditions'); 
    $('.termsAgree').slideDown(); 
    return true; 

} 

Cela fonctionne tant que la forme ne soit pas soumis et l'affichage d'alerte le long de la slideDown qui présente la case à cocher. Toutefois, si l'une des options de sélection n'a pas été sélectionnée par l'utilisateur, le formulaire s'affiche (bien que le message "Ce champ est requis" s'affiche.) Si je commente mes lignes ci-dessus, le comportement correct est respecté

Mon code de validation la structure est la suivante:.

$("form#register").validate({ 

rules:{ 

     name:{ 
      required: true, 
      number: false 
     }, 

     ..... 

     add1:{ 
     required: true 
     }  

} 

}); 

$('form#register').submit(function(){ 

    ... 

    if(!$('#agreeConfirm').is(':checked')){ 

     alert('Please tick to agree to our terms and conditions'); 
     $('.termsAgree').slideDown(); 
     return false; 

    } 

} 

Merci à l'avance

+0

Il serait préférable d'inclure également le code HTML pertinent pour en faire un exemple complet et concis. – Sparky

Répondre

0

Vous pouvez ajouter une règle pour la case à cocher dans la méthode de validation de formulaire pour le champ Rechercher this

+0

merci mais je ne pense pas que ça aide dans mon cas, je veux faire glisser un div quand la validation échoue ... Je ne pense pas que je peux le faire dans la méthode de validation –

+1

Dans 'errorPlacement: fonction (erreur, élément) {} 'méthode que vous pouvez identifier l'élément si c'est case checkbox alors vous pouvez faire défiler le DIV. Cela va résoudre votre problème à coup sûr! – deepakb

0

Vous ne devriez pas utiliser un.. Séparer entier mangé submit fonction de gestionnaire lors de l'utilisation du plugin jQuery Validate. C'est redondant et la cause de votre conflit. Le plugin gère déjà automatiquement l'événement submit ...

Le plugin a une fonction de rappel submitHandler que vous utiliseriez pour tout ce qui doit être fait lorsqu'un formulaire valide est soumis.

quelque chose comme ça ...

$("form#register").validate({ 
    rules:{ 
     name:{ 
      required: true, 
      number: false 
     }, 

     ..... 

     add1:{ 
      required: true 
     } 
    }, 
    submitHandler: function(form) { 
     // something to do when the form is valid 
     if(!$('#agreeConfirm').is(':checked')){ 
      alert('Please tick to agree to our terms and conditions'); 
      $('.termsAgree').slideDown(); 
      form.submit(); 
     }; 
     return false; 
    }, 
    invalidHandler: function(event, validator) { 
     // something to do when validation fails 
    } 
}); 

Voir toutes les options de rappel: http://jqueryvalidation.org/validate