2010-02-18 18 views
10

estoy usando el plugin de jQuery selector de fechas en http://plugins.jquery.com/project/datepick con el plugin de validación selector de fechas.jQuery tema mensaje de validación selector de fechas

<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> 

Y el cuerpo del documento es el siguiente:

<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 forma valida la primera vez, pero el mensaje de error para el selector de fechas no desaparece inmediatamente después de seleccionar una fecha .. sin embargo, va ausente si la fecha es seleccionada la segunda vez. Cualquier ayuda a hacer que se vaya la primera vez que se seleccione será apreciado

+0

Siento que es algo que ver con los eventos que genera el selector de fechas, el plug-in de validación valida sólo en ciertos eventos .. – Abhishek

+0

ver este para obtener más información: https://github.com/ posabsolute/jQuery-validación-motor/temas/70 –

Respuesta

21

una fecha Desea establecer esto en sus valores por defecto datepicker:

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

Tan pronto como se selecciona otra fecha que hará que el plug-in de validación vuelva a verificar el campo

+0

impresionante !! Eso funcionó :) Gracias. – Abhishek

+7

En realidad, puede querer 'onSelect: function() {$ (this) .valid(); } ', de lo contrario, si no desea que la validación se active hasta que se envíe el formulario, si la persona abre el recolector de datos (estableciendo el foco en el campo), el mensaje de error de validación se activará cuando establezca el foco en otro campo. Si lo coloca en Seleccionar, marcará el campo válido cuando realmente seleccione un valor. – JustinP8

3

La "mejor respuesta" no funcionó para mí. Descubrí que el validador validaba el formato de fecha, aunque no se lo pedí. Aquí está mi solución:

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