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 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/#ignore
Aww 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