2014-05-09 25 views
0

有一個表單包含'from'和'until'日期,每個日期,月份和年份框。 我想用所選日期的這些d-m-y值('from'或'until')填充datePicker。 這是腳本的樣子:

$('.year').datepicker({ 
    inline: true, 
    showOtherMonths: true, 
    showOn: 'button', 
    buttonText: '', 
    defaultDate: new Date(
     parseInt($('input[name="ydate'+$(this).attr('name').replace(/.date/, '')+'"]').val()) 
     ,parseInt($('input[name="mdate'+$(this).attr('name').replace(/.date/, '')+'"]').val())-1 
     , parseInt($('input[name="ddate'+$(this).attr('name').replace(/.date/, '')+'"]').val()) 
    ), 
    changeYear: true, 
    onClose: function(dateText,picker) { 
     var prefix = $(this).attr('name').replace(/.date/, ''); 

     $('input[name="ddate'+prefix+'"]').val(dateText.split(/\//)[1]); 
     $('input[name="mdate'+prefix+'"]').val(dateText.split(/\//)[0]); 
     $('input[name="ydate'+prefix+'"]').val(dateText.split(/\//)[2]); 

    } 
}); 

OnClose事件填充d-M-Y inputfields就好了,但defaultDate不會喜歡這個工作。 有什麼建議嗎?

回答

1

由於執行上下文沒有改變,所以this仍然指向datepicker初始化的方法的上下文。

所以解決方案可以是使用是.each(),現在each處理機this內將參考當前.year元件通過該組.year元件進行迭代。

$('.year').each(function() { 
    var nm = $(this).attr('name').replace(/.date/, ''); 
    $(this).datepicker({ 
     inline: true, 
     showOtherMonths: true, 
     showOn: 'button', 
     buttonText: '', 
     defaultDate: new Date(
     parseInt($('input[name="ydate' + nm + '"]').val()), parseInt($('input[name="mdate' + nm + '"]').val()) - 1, parseInt($('input[name="ddate' + nm + '"]').val())), 
     changeYear: true, 
     onClose: function (dateText, picker) { 
      var prefix = $(this).attr('name').replace(/.date/, ''); 

      $('input[name="ddate' + prefix + '"]').val(dateText.split(/\//)[1]); 
      $('input[name="mdate' + prefix + '"]').val(dateText.split(/\//)[0]); 
      $('input[name="ydate' + prefix + '"]').val(dateText.split(/\//)[2]); 

     } 
    }); 
}) 
+0

非常感謝!我有點困惑,爲什麼它在onClose事件中起作用。它現在有效:-) – PaulH