R Shiny 数字输入自动格式化为十进制,可能使用 shinyWidgets::autonumericinput()

R Shiny numeric input automatically format as decimal, possibly using shinyWidgets::autonumericinput()

我在一个闪亮的应用程序中有几个数字输入框供用户输入 lat/long 值。我想知道是否可以对其进行格式化,以便用户不必在经度框中输入小数点或减号。

例如,在 Access 中(我正在将访问表单转换为闪亮的应用程序),输入框如下所示:

我知道我可以使用正则表达式在幕后完成,但我希望在用户眼前完成。目前,我只有一个标准 numericInput('Latitude', Latitude, value = NA)。我在 shinyWidgets 库中找到了 autonumericInput(),这看起来很有希望,但我不确定如何处理它。

我们可以将 updateNumericInput 与某些 stringr 函数一起使用。例如设置两位数后的小数位:

library(shiny)
library(stringr)

ui <- fluidPage(
  numericInput("lat", "Insert Latitude", "")
)

server <- function(input, output, session) {
  observeEvent(input$lat, {
    if (!is.na(input$lat)) {
      if (str_length(input$lat) > 2 & !str_detect(input$lat, "\.")) {
        x <- input$lat
        str_sub(x, 3) <- str_c(".", str_sub(x, 3))
        updateNumericInput(session, inputId = "lat", value = as.numeric(x))
      }
    }
  })
}

shinyApp(ui, server)