我试图在闪亮的应用中使用此jquery插件(https://longbill.github.io/jquery-date-range-picker/)。它几乎可以工作。
日历日期选择器(下方图片的左下角)正确地将文本发送到文本输入(左上角)。但是服务器对象input$daterange12
没有注册文本输入的更改,除非进行进一步的更改(即添加空格,按回车等)。
该应用正在http://joebrew.shinyapps.io/daterange运行。 代码位于github.com/databrew/daterange。
如何让闪亮的服务器检测daterangepicker的更改并更新input$daterange12
对象,而无需手动修改文本框?
答案 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);
});
});