回答編集履歴

1 少し加筆

ToshinoriNamiki

ToshinoriNamiki score 18

2016/03/10 21:13  投稿

以下の箇所を
==========================================================================
//カレンダーからプルダウンを更新
   $('.calender').each(function() {
       var id = '#' + $(this).attr('id');
       $(id + ' input').bind('change', function() {
           var i = 0;
           var dates = $(this).val().split('/');
           $(id + ' select').each(function() {
           var year = dates[0];
               $(this).val(dates[i]);
               i++;
           });
       });
   });
==========================================================================
から
==========================================================================
   $('.calender').each(function() {
       var id = '#' + $(this).attr('id');
       $(id + ' input').bind('change', function() {
           var i = 0;
           var dates = $(this).val().split('/');
           $(id + ' select').each(function() {
if (i == 0) {
               $(this).val(dates[0] + '-' + dates[1]);
} else {
               $(this).val(dates[2]);
}
               i++;
           });
       });
   });
==========================================================================
にすれば直ると思います。
$(id + ' select').eachでは、年月、日という順番にコントロールが入ってくるようですが、
セットしているのは年、月、日なので、2番目のコントロールに月がセットされるのだと思います。
セットしているのは年、月、日なので、2番目のコントロールに月がセットされるのだと思います。
また、余計なお世話かもしれませんが、$(id + ' select').eachではなく、
$('#year_month').val('2016-03');
$('#day').val('10');
のようにセットした方がわかりやすいコードになると思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る