plugin jQuery Validation ignoré éléments sont validés
- Je valider un formulaire avec tje Plugin jQuery Validation. Si le navigateur prend en charge le HTML5 datetime-local de l'élément que je veux que l'entrée de ne pas être validé. Tout fonctionne bien, sauf que les éléments avec l'ignorer classe encore être validé.
HTML dans le navigateur Chrome (avec datetime-local de soutien)
<form action="/Events/EditEventInfo/37" id="EditForm" method="post" novalidate="novalidate"><input name="__RequestVerificationToken" type="hidden" value="bg5O93sGSgPSWzzsaMfKzd0FPWddBBw9ZYC4srs5xBWmJgsBKWjmD2TL0OXyQNwGl1fa7orAp08pCL1RLxzlSdbNWc9YUxxd1rxGrpw0fhgINRnd3vXoCzG5bDhe2ySk77kXfCfyEJvy-uvYRIbA8Q2"> <div class="form-horizontal">
<div class="form-group">
<label for="StartDate" class="control-label col-md-2">Startdatum</label>
<div class="col-md-10">
<input id="StartDate" name="StartDate" class="form-control ignore error" type="datetime-local" required="" aria-required="true" aria-invalid="true"><label id="StartDate-error" class="error" for="StartDate">Bitte geben sie ein Datum im Format 'dd.MM.yyyy HH:mm' an.</label>
</div>
</div>
<div class="form-group">
<label for="EndDate" class="control-label col-md-2">Enddatum</label>
<div class="col-md-10">
<input id="EndDate" name="EndDate" class="form-control ignore error" type="datetime-local" required="" aria-required="true"><label id="EndDate-error" class="error" for="EndDate">Bitte geben sie ein Datum im Format 'dd.MM.yyyy HH:mm' an.</label>
</div>
</div>
<div class="form-group">
<label for="Name" class="control-label col-md-2">Name</label>
<div class="col-md-10">
<input id="Name" name="Name" class="form-control valid" value="Party. Yolo." type="text" minlength="2" required="" aria-required="true">
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Speichern" class="btn btn-default">
</div>
</div>
</div>
Script:
<script type="text/javascript">
$.validator.addMethod(
"deDateTime",
function (value, element) {
//dd.MM.yyyy HH:mm
var re = /^\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}$/;
return (this.optional(element) && value == "") || re.test(value);
},
"Bitte geben sie ein Datum im Format 'dd.MM.yyyy HH:mm' an."
);
if (DateTimeLocalSupport())
{
$('#StartDate').val("@Model.StartDate.ToString("s")");
$('#EndDate').val("@Model.EndDate.ToString("s")");
//HTML5 input types are available, no need to validate those fields
$('#StartDate').addClass("ignore");
$('#EndDate').addClass("ignore");
}
else
{
$('#StartDate').val("@Model.StartDate.ToString("dd.MM.yyyy HH:mm")");
$('#EndDate').val("@Model.EndDate.ToString("dd.MM.yyyy HH:mm")");
}
$('#EditForm').validate({
ignore: ".ignore :hidden",
rules: {
StartDate: {
deDateTime: true
},
EndDate: {
deDateTime: true
}
}
});
alert("Valid: " + $('#EditForm').valid());
</script>
La vérification de la prise en charge HTML5, en remplissant les champs et l'ajout de classes fonctionne très bien. Seulement, la validation plugin encore valider les éléments de son pas censé le faire.
Solution:
ignore: '.ignore, :hidden'
J'ai remplacé le code HTML avec le rendu de l'une de google Chrome.
Tout d'abord, je ne crois pas que vous pouvez activer ou désactiver ce comportement en ajoutant et en supprimant le
Quand j'ajoute de l'ignorer classe de ces champs dans mon code html, jQuery essaie toujours de les valider. Je suis un peu confus là..
Je ne pense pas que vous devriez avoir besoin de spécifier
Aww composant logiciel enfichable. C'est assez bien. ".ignorer "ou".ignorer :hidden' faire le travail. Les choses peuvent être si facile. Merci beaucoup!
Tout d'abord, je ne crois pas que vous pouvez activer ou désactiver ce comportement en ajoutant et en supprimant le
ignore
class
. Le class
doit être là tout le temps. Deuxièmement, la Validation HTML5 est toujours désactivée par le jQuery Valider plugin.Quand j'ajoute de l'ignorer classe de ces champs dans mon code html, jQuery essaie toujours de les valider. Je suis un peu confus là..
Je ne pense pas que vous devriez avoir besoin de spécifier
:hidden
dans le sélecteur, puisque l'élément ne semble pas être caché. Essayez: ignore: '.ignore'
~ Voir: jqueryvalidation.org/validate/#ignoreAww composant logiciel enfichable. C'est assez bien. ".ignorer "ou".ignorer :hidden' faire le travail. Les choses peuvent être si facile. Merci beaucoup!
OriginalL'auteur davidf | 2014-07-03
Vous devez vous connecter pour publier un commentaire.
ignore: ".ignore :hidden"
dit de l'ignorer caché champs avec la classeignore
.ignore: ".ignore"
va dire qu'à ignorer les champs de la classe.ignore
.ignore: ".ignore, :hidden"
diront de l'ignorer champs de la classe.ignore
ET les champs qui sont cachés.Sans préciser la
ignore
option, la valeur par défaut estignore: ":hidden"
où il sera seulement ignorer les champs cachés.Paramètre
ignore: []
dit le plugin pour ignorer rien et valider le tout.OriginalL'auteur Sparky