我想知道是否有一个技巧可以阻止用户使用Shiny中的dateRangeInput在开始日期之前设置结束日期(比如第一个日期是“01-01-2016”,第二个日期会比这一点)。
我尝试每次重新定义最小值和最大值,然后我卡住了,无法让我的分钟恢复到原来的值。
答案 0 :(得分:3)
这是一个例子。基本上它会观察开始日期的变化,然后动态更新dateRangeInput
对象。如果先前选择的结束日期早于新的开始日期,则更新结束日期。最小可能日期也会更新,以便用户无法选择早于开始日期的结束日期。
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Dynamically change dateRangeInput"),
sidebarLayout(
sidebarPanel(
dateRangeInput("date_range", "Range of dates")
),
mainPanel(
textOutput("text")
)
)
))
server <- shinyServer(function(input, output, session) {
# Update the dateRangeInput if start date changes
observeEvent(input$date_range[1], {
end_date = input$date_range[2]
# If end date is earlier than start date, update the end date to be the same as the new start date
if (input$date_range[2] < input$date_range[1]) {
end_date = input$date_range[1]
}
updateDateRangeInput(session,"date_range", start=input$date_range[1], end=end_date, min=input$date_range[1] )
})
output$text <- renderText({
validate(
need(input$date_range[2] >= input$date_range[1], "End date cannot be earlier than start date!")
)
input$date_range[2] >= input$date_range[1]
})
})
shinyApp(ui = ui, server = server)