J'utilise le plugin de validation jQuery pour valider un formulaire, et je voudrais supprimer la validation et soumettre le formulaire si un certain lien est cliqué.
Je soumets un formulaire avec javascript comme jQuery('form#listing').submit()
, je dois donc supprimer les règles de validation/fonction avec javascript.
Le problème est que je ne peux pas comprendre comment procéder. J'ai essayé des choses comme jQuery('form#listing').validate({});
et jQuery('form#listing').validate = null
, mais sans succès.
Déclenchez la méthode de soumission DOM pour ignorer la validation:
$("#listing")[0].submit();
Vous pouvez supprimer les événements des nœuds avec nbind :
jQuery('form#listing').unbind('submit'); // remove all submit handlers of the form
Ce que vous recherchez probablement, c'est que le plug-in de validation peut également se désaffecter de l'événement de soumission:
jQuery('form#listing').validate({
onsubmit : false
});
Pour les deux, vous devriez être en mesure de poursuivre avec un appel à .submit()
pour envoyer le formulaire:
jQuery('form#listing').unbind('submit').submit();
var form = $('#my_form_id').get(0);
$.removeData(form,'validator');
Fonctionne vraiment.
Vous pouvez ajouter une classe css d'annulation à un élément (bouton, entrée) afin qu'il ignore la validation
Vous pouvez également utiliser la fonction publique "règles" de cette manière:
$('input, select, textarea').each(function() {
$(this).rules('remove');
});
C'est ce que j'utilise;)
Je n'ai trouvé aucun autre moyen utile si vous vouliez activer/désactiver la validation de vos formulaires (par exemple, une validation différente pour les types de paiement ...)
Ce que j'ai dû faire (ce n'est pas une bonne solution mais ça marche)
Configurez votre validation:
jQuery('#form').validate();
Désactiver le formulaire:
jQuery('#form').validate().currentForm = '';
Réactiver le formulaire:
jQuery('#form').validate().currentForm = jQuery('#form')[0];
Cela semble fonctionner pour moi maintenant:
var form = $('#my_form_id').get(0);
$(form).removeData('validate');
$("#formName").validate().settings.ignore = "*";
Se référer: https://github.com/jzaefferer/jquery-validation/issues/725
J'ai récemment mis à niveau vers 1.5.5 le script de validation de Jörn et la fonction removeValidator est obsolète.
...
jQuery.extend(
jQuery.fn,
{
removeValidator: function(){
this.unbind();
jQuery.removeData(this[0], 'validator');
}
...
Pour toutes les balises d'entrée du formulaire:
$('#myform').validate().settings.ignore = '.valid';
$('input').addClass('valid');
Ça marche pour moi.