首页 > 解决方案 > 如何使用闪亮的 numericInput 解决错误:使用多个输入字段输入“跳转”

问题描述

对于一个项目,我使用闪亮的多个 numericInput 字段来输入一定的金额。如果需要,应用程序用户应该能够添加新金额,并通过箭头或手动输入任何类型的数值。但是,当添加新字段并尝试手动添加金额时,输入似乎“跳跃”,有时整个应用程序崩溃。

我考虑过使用 textInput 字段而不是 numericInput ,但这似乎也不起作用。

这是我正在使用的代码的 MWE。一旦您通过加号按钮添加了几个金额字段并手动输入值,它就会开始跳跃/不工作。

ui <- fluidPage(#....design etc.,

    mainPanel(
      uiOutput("inputwidgets"),

      actionButton(inputId = "number",
                   label = icon(name = "plus",
                                lib = "font-awesome")),
      actionButton(inputId = "delete_number",
                   label = icon(name = "minus",
                                lib = "font-awesome")),

      actionButton("update", "Calculate")



    )
)

server <- function(input, output) {
  reac <- reactiveValues()

  observeEvent(c(input$number,input$delete_number), {
    # you need to add 1 to not start with 0
    add <- input$number+1
    # restriction for delete_number > number
    delete <- if(input$delete_number > input$number) add else input$delete_number
    calc <- add - delete
    reac$calc <- if(calc > 0) 1:calc else 1
  })
  # By clicking the actionButton "number" an additional row appears
  observe({
    req(reac$calc)
    output$inputwidgets = renderUI({
      input_list <- lapply(reac$calc, function(i) {
      amount <- input[[paste0("amount",i)]]

        # for each dynamically generated input, give a different name
        fluidRow(
          column(2,

                 # Input: Specify the amount ----
                 numericInput(
                   paste0("amount",i),
                   label="Amount",
                   #step = 1000,
                   value = if(!is.null(amount)) amount else 0
                 )
          )
        )
      })
      do.call(tagList, input_list)
  })
})

}
# Create Shiny app ----
shinyApp(ui = ui, server = server)

这个问题真的很烦人,扰乱了整个用户体验。对此有任何帮助将不胜感激。

标签: rshinynumeric-input

解决方案


推荐阅读