R Shiny文本输入未使用jquery日期范围选择器进行更新

时间:2018-02-16 00:27:48

标签: jquery r shiny

我试图在闪亮的应用中使用此jquery插件(https://longbill.github.io/jquery-date-range-picker/)。它几乎可以工作。

日历日期选择器(下方图片的左下角)正确地将文本发送到文本输入(左上角)。但是服务器对象input$daterange12没有注册文本输入的更改,除非进行进一步的更改(即添加空格,按回车等)。

该应用正在http://joebrew.shinyapps.io/daterange运行。 代码位于github.com/databrew/daterange

Image here

如何让闪亮的服务器检测daterangepicker的更改并更新input$daterange12对象,而无需手动修改文本框?

1 个答案:

答案 0 :(得分:1)

老实说,我甚至不知道为什么你会得到任何意见。

首先,输入上的change事件仅在手动进行更改时触发,因此您必须放入空格。

查看事件下的datepicker's documentation,您可以看到设置两个日期时会发出自定义事件datepicker-change。您必须订阅该而不是常规change

但是,你根本不应该使用daterange12container。这只是包装器,您指定的包含元素。它没有值属性。所以你实际上是在线上发送NULL。这就是为什么我很困惑你至少得到了一些东西。

然而,这并不重要,因为datepicker-change事件已经提供了所选的日期(再次查看文档)。

因此,您可以通过编辑JavaScript代码使代码工作,将其替换为:

$(function() {
  $('#daterange12').dateRangePicker({
    inline: true,
    container: '#daterange12container', 
    alwaysOpen: true
  });

  // JOE:

  $('#daterange12').on('datepicker-change', function(event, changeObject) {
    // changeObject has properties value, date1 and date2. 
    Shiny.onInputChange('daterange12', changeObject.value);
  });
});