【问题标题】:Unexpected dateInput behavior in ShinyShiny 中出现意外的 dateInput 行为
【发布时间】:2021-01-20 16:55:19
【问题描述】:

我有一个带有 dateInput() 的 Shiny 应用程序,它是使用以下代码创建的:

dateInput(
          inputId = ns("mutatie_datum"),
          label = "Mutatiedatum:",
          value = "2019-12-01",
          format = "dd-M-yyyy",
          startview = "month",
          language = "nl"
        )

当我运行应用程序时,将光标放在dateInput() 字段并手动删除 9,我的应用程序崩溃。使用browser() 可以看到dateInput() 的值变成了"0201-12-01"。如何防止应用在输入有效日期之前执行计算?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    shiny 有一些内置函数来验证值。下面,我使用了validate/need 的组合,如果日期无效,则会显示错误消息。如果您只想停止执行代码而不显示错误消息,则可以改用req

    library(shiny)
    
    ui <- fluidPage(
      dateInput(
        inputId = "mutatie_datum",
        label = "Mutatiedatum:",
        value = "2019-12-01",
        format = "dd-M-yyyy",
        startview = "month",
        language = "nl"
      ),
      verbatimTextOutput("test_out")
    )
    
    server <- function(input, output, session) {
      
      datum_fun <- reactive({
        # check the date
        validate(
          need(as.Date(input$mutatie_datum) > as.Date("2000-01-01"), "invalid date")
        )
        
        # do some calculations here
        input$mutatie_datum
      })
      output$test_out <- renderPrint({
        datum_fun()
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 谢谢@starja 我会试试这个!
    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2019-06-29
    • 2021-07-23
    相关资源
    最近更新 更多