J'ai un formulaire avec plusieurs champs que je valide (certains avec des méthodes ajoutées pour la validation personnalisée) avec l'excellent plugin jQuery Validation de Jörn Zaeffere. Comment contourner la validation avec des contrôles de soumission spécifiés (en d'autres termes, la validation au feu avec certaines entrées de soumission, mais ne déclenche pas la validation avec d'autres)? Cela serait similaire à ValidationGroups avec des contrôles de validation ASP.NET standard.
Ma situation:
C'est avec ASP.NET WebForms, mais vous pouvez l'ignorer si vous le souhaitez. Cependant, j'utilise davantage la validation comme une "recommandation": en d'autres termes, lorsque le formulaire est soumis, la validation se déclenche mais au lieu d'un message "obligatoire" qui s'affiche, une "recommandation" montre qui dit quelque chose du genre "vous vous avez manqué les champs suivants .... voulez-vous quand même continuer? " À ce stade, dans le conteneur d'erreurs, il y a un autre bouton de soumission maintenant visible qui peut être pressé qui ignorerait la validation et soumettrait de toute façon. Comment contourner les formulaires .validate () pour ce bouton de contrôle et toujours publier?
L'échantillon Acheter et vendre une maison sur http://jquery.bassistance.de/validate/demo/multipart/ permet cela afin d'accéder aux liens précédents, mais il le fait en créant des méthodes personnalisées et en l'ajoutant au validateur. Je préférerais ne pas avoir à créer des méthodes personnalisées de duplication de fonctionnalités déjà dans le plugin de validation.
Ce qui suit est une version abrégée du script immédiatement applicable que j'ai en ce moment:
var container = $("#<%= Form.ClientID %> div.validationSuggestion");
$('#<%= Form.ClientID %>').validate({
errorContainer: container,
errorLabelContainer: $("ul",container),
rules: {
<%= YesNo.UniqueID %>: { required: true },
<%= ShortText.UniqueID %>: { required: true } // etc.
},
messages: {
<%= YesNo.UniqueID %>: 'A message.',
<%= ShortText.UniqueID %>: 'Another message.' // etc.
},
highlight: function(element, errorClass) {
$(element).addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("valid");
},
unhighlight: function(element, errorClass) {
$(element).removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass("valid");
},
wrapper: 'li'
});