通过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);
}
有人经历过这个吗?
答案 0 :(得分:2)
为您的活动创建单独的功能
一个函数有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。