【问题标题】:Make datepicker work with highcharts使 datepicker 与 highcharts 一起工作
【发布时间】:2011-09-13 15:19:49
【问题描述】:

我在我的 rails 3 应用程序中实现了一个 highchart,并正在尝试进一步扩展它,以便它附加一个 highchart。我为什么要这样做的目的是让用户可以选择一个特定的日期,它会加载该选定日期的数据。我搜索并发现类似于我想要实现的目标http://jsfiddle.net/E8WQ5/8/

这里有正常的基本高位图表Basic stock chart。我想要做的是用日期选择器替换范围选择器。这是否可行,如果可以,我该怎么做。我已经按照示例(我提供的第一个链接)并实施了日期选择器。我现在正在努力做的是让 datepicker 真正与 highcharts 一起工作。我对 javascript 的了解并不是最高的,所以很抱歉这似乎是一个简单的问题。

我正在努力用日期选择器替换日期范围选择器..

【问题讨论】:

    标签: javascript jquery-ui datepicker highcharts


    【解决方案1】:

    您应该更改日期选择器 onselect 事件处理程序

    onSelect: function( selectedDate ) {
        var option = this.id == "from" ? "minDate" : "maxDate",
        instance = $( this ).data( "datepicker" ),
        date = $.datepicker.parseDate(
             instance.settings.dateFormat || 
             $.datepicker._defaults.dateFormat,
             selectedDate, instance.settings );
        dates.not( this ).datepicker( "option", option, date );
    }
    

    到这里:

    onSelect: function( selectedDate ) {
        var option = this.id == "from" ? "minDate" : "maxDate",
        instance = $( this ).data( "datepicker" ),
        date = $.datepicker.parseDate(
             instance.settings.dateFormat || 
             $.datepicker._defaults.dateFormat,
             selectedDate, instance.settings );
        dates.not( this ).datepicker( "option", option, date );
    
        var startDate=$("#from")[0].value;
        var endDate=$("#to")[0].value;
        if (startDate!=="" && endDate!=="") {
            startDate=startDate.split("/");
            endDate=endDate.split("/");
            chart.xAxis[0].setExtremes(
                Date.UTC(startDate[2], startDate[0]-1, startDate[1]),
                Date.UTC(endDate[2], endDate[0]-1, endDate[1])
            );
        }
    }
    

    这只是一个概念证明,仅当两个输入字段有值时才更新缩放,而不检查它是否是有效日期。

    如果只填写了一个字段,您也可以使用chart.xAxis[0].getExtremes() 更改缩放比例。

    我对 Jquery 不太了解(我习惯于 Mootools),并且对 datepicker 组件一无所知,也许有一种更优雅的方式来获取间隔,但这取决于你和不要'不依赖 Highstock。

    【讨论】:

    • 这绝对是我想要做的。但是,我对其进行了进一步调整,使其如下所示:jsfiddle.net/E8WQ5/26。但是我有一个小问题。当您选择 2011 年 9 月 15 日时,我无法选择其他日期,只能选择过去的日期。如果这有意义的话。
    • 我设法将var option = this.id == "from" ? "minDate" : "maxDate", 替换为var option = $(this).is("input[name=min]") 对此进行了排序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2013-09-05
    • 1970-01-01
    • 2013-10-03
    • 2011-11-13
    • 2012-09-13
    • 2015-07-23
    相关资源
    最近更新 更多