Highstock inputDateParser发射三次

时间:2014-09-06 09:52:27

标签: javascript highstock bootstrap-datepicker

通过date calendar选择日期后,我不确定是什么导致它发射三次。以下是为rangeSelector

设置的选项
rangeSelector:{
    enabled:true,
    inputEnabled: true,
    inputDateFormat: '%d/%m/%Y',
    inputEditDateFormat: '%d/%m/%Y',                    
    inputDateParser: function (value) {
        value = value.split('/');
        console.log(value);
        return Date.UTC(
          parseInt(value[0]),
          parseInt(value[1]) - 1,
          parseInt(value[2])
        );
    }
}

使用backbone.view jquery选择器,这里是我如何启动图表

this.$el.highcharts(Options, this.extra);

extra作为触发日期选择器的其他设置

highlightSer: function (chart){         
      setTimeout(function () {              
         $('input.highcharts-range-selector', $(chart.container).parent())
            .datepicker({
                format: "dd/mm/yyyy",    
                todayBtn: "linked",
                autoclose: true,
                todayHighlight: true,
                orientation: "auto right"
            });             
      }, 0);            
}

有人经历过这个吗?

1 个答案:

答案 0 :(得分:2)

来自this SO的@seeARMS解决方案为我工作,只做了一次修改:

为您的活动创建单独的功能

一个函数有datePicker方法和你的设置:

$('input_with_date_picker').datePicker({...});

单独的功能可控制您的on changeDate事件:

$(document).on('changeDate', 'input_with_date_picker', function({..do something..}));

或:

$('input_with_date_picker').on('changeDate', function({..do something..}));

更新

由于您增加了功能,评论中的

The fiddle you provided按预期工作:

$('input.highcharts-range-selector').on('changeDate', function(e) {
    alert(e.date);                                     
});

在页面加载时,它会执行两次,因为您有两个匹配的元素。它们似乎都是由这个JS生成的:

rangeSelector:{
        enabled:true,
        inputEnabled:true,
        inputDateFormat:"%d/%m",
        inputEditDateFormat:"%d/%m/%Y",
        inputDateParser: function (value) {
            value = value.split('/');
            console.log(value);
            return Date.UTC(
                parseInt(value[0]),
                parseInt(value[1]) - 1,
                parseInt(value[2])
            );
        }       
    },

如果您更改任一元素的日期,该函数将执行一次,这是您帖子的目标。

您可能会指示它无法正常工作,因为从datePicker中选择新日期时日期不会更新。我不确定为什么会这样,我不熟悉highcharts。