Jquery Datepicker第二次不会触发

时间:2014-02-26 06:07:37

标签: javascript jquery datepicker

所以我有这段代码

$('#apply').datepicker({
    changeMonth: true, changeYear: true,
    dateFormat: "dd-mm-yy",

    onClose: function(selectedDate){
       $('#last').prop('disabled', false);
       $('#last').datepicker('destroy');
       var formatted = selectedDate.split('-');
       var new_date = formatted[1]+"/"+formatted[0]+"/"+formatted[2];
       $('#last').datepicker({
         dateFormat: "dd-mm-yy",           
         minDate: (function(){                 
            var min = new Date(new_date); 
            min = $('#apply').datepicker('getDate');
            var newmin = new Date(new_date);
             newmin.setDate(min.getDate()+121);
            return newmin;
         })(),
         maxDate:(function(){
            var min = new Date(new_date);
             min = $('#apply').datepicker('getDate');
            var newmin = new Date(new_date);
            newmin.setDate(min.getDate()+129);
            return newmin;

         })(),

       });


    }

});

问题是我的日期 #apply datepicker不会第二次触发,(第一次单击文本框,日期选择器将显示,单击外部,然后单击文本框再次,日期选择器woukd没有显示)为什么会这样?你能救我吗?

这是帮助您了解我的问题的JSFIDDLE DEMO

谢谢,

2 个答案:

答案 0 :(得分:1)

你需要对min进行空检查,因为如果你没有选择任何日期,那么“getdate”会返回null

 onClose: function(selectedDate){
           $('#last').prop('disabled', false);
           $('#last').datepicker('destroy');
           var formatted = selectedDate.split('-');
           var new_date = formatted[1]+"/"+formatted[0]+"/"+formatted[2];
           $('#last').datepicker({
             dateFormat: "dd-mm-yy",           
             minDate: (function(){                 
                var min = new Date(new_date); 
                min = $('#apply').datepicker('getDate');
                var newmin = new Date(new_date);
                  if(min != null)
                 newmin.setDate(min.getDate()+121);
                return newmin;
             })(),
             maxDate:(function(){
                var min = new Date(new_date);
                 min = $('#apply').datepicker('getDate');
                var newmin = new Date(new_date);
               if(min != null)
                newmin.setDate(min.getDate()+129);
                return newmin;

             })(),

           });

http://jsfiddle.net/DHyPe/22/

答案 1 :(得分:1)

此行导致错误,

min = $('#apply').datepicker('getDate');

更新 fiddle

如果您没有先选择日期。 min将为null。它会导致错误

newmin.setDate(min.getDate()+121);