2010-02-18 6 views
10

J'utilise le plugin datepicker jquery à http://plugins.jquery.com/project/datepick avec le plugin de validation datepicker.jQuery un message de validation datepicker question

<script id="frmValidation" type="text/javascript"> 

$(document).ready(function(){ 
    var validator = $("#frmTest").validate({ 
     rules:{ 
      fname: "required", 
      dobPicker: "required" 
     }, 
     messages:{ 
      fname: "Please enter a name", 
      dobPicker: "Select a date" 
     }, 

    }); 
    $('#dobPicker').datepick(); 
    $.datepick.setDefaults({showOn: 'both', dateFormat: 'dd-mm-yy', yearRange:'1900:2010'}); 
}); 
</script> 

Et le corps du document est la suivante:

<form id="frmTest" action="" method="post"> 
<div id="error-list"></div> 
<div class="form-row"> 
<span class="label"><label for="fname">Name</label></span> 
<input type="text" name="fname" /> 
</div> 
<div class="form-row"> 
<span class="label"><label for="dobPicker">DOB</label></span> 
<input type="text" id="dobPicker" name="dobPicker" style="margin-left: 4px;"/> 
</div> 
<div class="form-row"> 
<input type="submit" name="submit" value="submit"/> 
</div> 
</form> 

La forme valide la première fois, mais le message d'erreur pour la datepicker ne disparaît pas immédiatement une date est sélectionnée .. mais il va si la date est sélectionnée la deuxième fois. Toute aide à faire passer la première fois une date est choisie sera apprécié

+0

Je pense qu'il est quelque chose à voir avec les événements que le datepicker génère, le plug-in de validation valide uniquement sur certains événements .. Voir – Abhishek

+0

ceci pour plus d'informations: https://github.com/ posabsolute/jQuery-Validation-Engine/Problèmes/70 –

Répondre

21

Vous souhaitez définir dans vos paramètres par défaut datepicker:

onClose: function() {$(this).valid();}, 

Dès qu'une autre date est sélectionnée, elle fera le plugin validateur revérifiez le champ.

+0

Génial !! Cela a fonctionné :) Merci. – Abhishek

+7

Vous pouvez réellement faire 'onSelect: function() {$ (this) .valid(); } ', sinon, si vous ne voulez pas que la validation se fasse jusqu'à ce que le formulaire soit soumis, si la personne ouvre le datapicker (en mettant le focus sur le champ), le message d'erreur de validation se déclenchera. Si vous le mettez sur Select, il marquera le champ valide quand ils choisissent réellement une valeur. – JustinP8

3

La "meilleure réponse" n'a pas fonctionné pour moi. J'ai compris que le validateur validait le format de la date même si je ne le demandais pas. Voici ma solution:

$('form').validate(
    rules: 
    { 
     MyDateControl:{ 
      required:true, 
      date:false 
     } 
    } 
);