2011-01-28 6 views
7

Utilizzo un eccellente plug-in jquery per il prelievo di Birthday Date per il mio modulo web.Selettore compleanno jQuery che riguarda l'aggiornamento del modulo

Demo qui: http://abecoffman.com/stuff/birthdaypicker/

Il problema ho a che fare con è su una validazione dei form. La convalida del mio modulo reindirizza nuovamente alla stessa pagina e perderò la data che è stata scelta.

Esiste un modo per aggiungere un'opzione per il javascript del selettore di data: http://abecoffman.com/stuff/birthdaypicker/bday-picker.js

in modo da poter impostare un "default data selezionata". La configurazione può lavorare a qualcosa di simile:

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

Questo imposterà la data "selezionato" al 28 gennaio 2011.

+0

Questo plug-in non sembra supportare una data selezionata al momento dell'inizializzazione. Forse potresti modificarlo. – Pointy

+0

La mia abilità js è limitata. Sto cercando di vedere come andrei a modificarlo. – Yada

+0

Ho [aggiornato il plug-in] (http://abecoffman.com/stuff/birthdaypicker/) per consentire l'impostazione di una data predefinita. – Abe

risposta

3

Senza modificare il plugin è possibile utilizzare JQuery per impostare i valori. Il markup che il plugin genera simile a questo:

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

Così il vostro JQuery sarebbe semplicemente avere per ottenere una stretta su quegli elementi e set their value. Dovresti assicurarti di impostare un valore che esiste nell'elenco di selezione.

$('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) 

Questo codice dovrebbe essere chiamato dopo che il plugin è stato chiamato, altrimenti la marcatura non sarà stato ancora generato.

+0

Grazie. Questa soluzione funziona perfettamente. – Yada

0

Se il server restituisce una data come questo (codice C#):

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

Su jquery-compleanno-picker.min.js il file si trova un codice come questo:

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()) 
     } 

basta cambiare per:

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); 
     } 

Poi, quando si specifica un defaultDate il controllo funzionerà come come noi vogliamo