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