2011-01-28 10 views
7

Estoy utilizando un excelente complemento de jquery para la fecha de cumpleaños para mi formulario web.jQuery Selector de cumpleaños relacionado con la actualización del formulario

demo aquí: http://abecoffman.com/stuff/birthdaypicker/

El problema que estoy tratando es en una forma de validación. La validación de mi formulario redirige a la misma página y perderé la fecha elegida.

¿Hay alguna forma de añadir una opción para el código JavaScript del selector de fecha: http://abecoffman.com/stuff/birthdaypicker/bday-picker.js

para que pueda establecer una "fecha seleccionada por defecto". La configuración puede trabajar a algo como:

$("#picker1").birthdaypicker({ 
    chosenDay: 1;" 
    chosenMonth: 28;" 
    chosenYear: 2011;" 
}); 

Esto fijará la fecha "seleccionado" al 28 de enero de 2011.

+0

Ese complemento no parece admitir una fecha seleccionada en el momento de la inicialización. Quizás podrías modificarlo. – Pointy

+0

Mi habilidad js es limitada. Estoy buscando cómo voy a modificarlo. – Yada

+0

He [actualizado el complemento] (http://abecoffman.com/stuff/birthdaypicker/) para permitir establecer una fecha predeterminada. – Abe

Respuesta

3

Sin modificar el plugin se puede utilizar jQuery para establecer los valores. El margen de beneficio que genera el plugin se ve así:

<fieldset class='birthday-picker'> 
    <select class='birth-year' name='birth[year]'></select> 
    <select class='birth-month' name='birth[month]'></select> 
    <select class='birth-day' name='birth[day]'></select> 
</fieldset> 

Así que su JQuery simplemente tendría que obtener una bodega en aquellos elementos y set their value. Debería asegurarse de establecer un valor que exista en la lista de selección.

$('select.birth-year').val('my_year');  // 1980 
$('select.birth-month').val('my_month'); // 1-12 (not "Jan" which is the text) 
$('select.birth-day').val('my_day');  // 1-31 (keep month limitation in mind) 

Este código tendría que ser llamado después de que el plugin ha sido llamado, de lo contrario el marcado no se han generado todavía.

+0

Gracias. Esta solución funciona perfectamente. – Yada

0

Si el servidor devuelve una fecha como esta (código C#):

new DateTime(birthYear, birthMonth, birthDay, 0, 0, 0, DateTimeKind.Utc).ToString(CultureInfo.InvariantCulture); 

En jquery-cumpleaños-picker.min.js archivo que encontrará un código como este:

if (s.defaultDate) { 
      var d = new Date(s.defaultDate); 
      console.log(d); 
      u.val(d.getFullYear()); 
      a.val(d.getMonth() + 1); 
      f.val(d.getDate()) 
     } 

simplemente cambiarlo por:

if (s.defaultDate) { 
      var d = new Date(s.defaultDate); 
      console.log(d); 
      u.val(d.getFullYear()); 
      a.val(d.getMonth() + 1); 
      f.val(d.getDate()) 

      //Added by LVC 
      $birthday.val(s.defaultDate); 
     } 

Entonces, cuando se especifica un defaultDate el control funcionará como lo queremos

Cuestiones relacionadas