Changer le format du datepicker de jQuery UI interrompt la synchronisation avec une liste de sélection

Grâce à techfoobar, j’ai un sélecteur de date avec un champ d’entrée synchronisé et une liste de sélection.

Cependant, lorsque j’ai changé le format de la date en “aa-mm-jj”, cela a cessé de fonctionner. Un changement dans la liste de sélection déclenche le changement dans l’entrée, mais un clic sur le sélecteur de date ne mettra pas à jour la liste de sélection.

Voici le script:

$(function() { $('#selectedDatepicker').datepicker({ dateFormat: "yy-mm-dd", beforeShow: readSelected, onSelect: updateSelected, minDate: new Date(2013, 1 - 1, 1), maxDate: new Date(2013, 06 - 1, 31), numberOfMonths: 3, showButtonPanel: true, showOn: 'both', buttonImageOnly: true, buttonImage: 'http://soffr.miximages.com/javascript/calendar.gif'}); // Prepare to show a date picker linked to three select controls function readSelected() { $('#selectedDatepicker').val($('#selectYear').val() + '-' + $('#selectDay').val()); return {}; } // Update three select controls to match a date picker selection function updateSelected() { var date1 = $(this).val(); console.log(date1.subssortingng(3, 5)); console.log(date1.subssortingng(6, 10)); $('#selectDay').val(date1.subssortingng(3, 5)); $('#selectYear').val(date1.subssortingng(6, 10)); } $('select').change(readSelected); }); 

C’est le code HTML:

  1 2 3 4 ...   January 2013 February 2013 March 2013 April 2013 May 2013 June 2013  

Date:

Vous pouvez vérifier le violon ici:

http://jsfiddle.net/xKXZm/8/

D’où vient ce problème? Les deux champs ont le même jeu de format.

La valeur que vous essayez de sélectionner dans l’élément select n’existe pas, car la sous-chaîne produit une valeur différente de celle d’origine. Vous devez ajuster votre substr conséquence.

 function updateSelected() { var date1 = $(this).val(); console.log(date1.subssortingng(8)); console.log(date1.subssortingng(0, 4)); $('#selectDay').val(date1.subssortingng(8)); $('#selectYear').val(date1.subssortingng(0, 7)); } 

jsfiddle