Javascript Highstock inputDateParser触发三次

Javascript Highstock inputDateParser触发三次,javascript,highstock,bootstrap-datepicker,Javascript,Highstock,Bootstrap Datepicker,我不确定是什么原因导致它在选择了一个日期后三次开火。以下是为范围选择器设置的选项 rangeSelector:{ enabled:true, inputEnabled: true, inputDateFormat: '%d/%m/%Y', inputEditDateFormat: '%d/%m/%Y', inputDateParser: function (value) { value = value

我不确定是什么原因导致它在选择了一个日期后三次开火。以下是为
范围选择器设置的选项

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(选项,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);            
}
有人经历过这种情况吗?

@seeARMS solution from worked for me,只做了一次修改:

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

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

$('input_with_date_picker').datePicker({...});
一个单独的函数控制changeDate上的
事件:

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

更新: 在注释中,由于您添加了以下功能,注释按预期工作:

$('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])
            );
        }       
    },
如果更改其中任何一个元素的日期,函数将执行一次,这是本文的目标


从日期选择器中选择新日期时,由于日期未更新,您可能会指示它不起作用。我不知道为什么会这样,我不熟悉highcharts。

你能提供像JSFIDLE这样的实时演示吗?谢谢。嗨,Pawel,这是JSFIDLE哦,这个日历的问题是肯定的。一旦移除,它就可以正常工作(只需一次呼叫):。无论如何,您在使用
Date.UTC()
时出现了错误,值的顺序是错误的(上面的示例已经解决了这个问题)。然后,阅读有关datepicker三次致电的内容。感谢您的修复。顺便说一句,无论何时我输入的日期早于1987年7月,highchart都会将其追溯到1987年7月。这是错误吗?您只能浏览图表上的可用日期。这不是Highchart的解决方案。看,它似乎工作得很好。代码触发两次,因为您有两个元素满足此条件:
$('input.highcharts range selector')
:From输入和To输入。如果不是的话,代码将触发6次,每次输入3次。我不明白你的意思。你能提供样本JSFIDLE吗?哈!我妻子就是这么说的!你的小提琴是我的样品,因为你的小提琴按预期工作。查看我的更新。
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])
            );
        }       
    },