如何返回R Shiny中焦点元素的ID?

时间:2019-06-21 21:08:13

标签: javascript shiny

我在R Shiny中有一系列的textInputs,想要在textOutput中获取并显示具有焦点的文本框的ID,即光标闪烁的ID。

我正在尝试用JavaScript进行此操作,但收效甚微。

这就是我一直在努力的事情:

ui <- fluidPage(
  tags$script(' Shiny.setInputValue("focused.element", $(document.activeElement )) '),
  textInput(inputId = "text1", label = NULL, value = ""),
  textInput(inputId = "text2", label = NULL, value = ""),
  textInput(inputId = "text3", label = NULL, value = ""),
  textInput(inputId = "text4", label = NULL, value = ""),
  textOutput("output1")
)

server <- function(input, output, session) {
  output$output1 <- renderText({ input$focused.element })
}

我希望当光标位于第一个textInput时显示“ text1”,光标位于第二个时显示text2,等等...

现在,从output1不显示任何文本。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

这吗?

library(shiny)
ui <- fluidPage(
  tags$script('$(document).ready(function(){ $("input").on("focus", function(e){ Shiny.setInputValue("focusedElement", e.target.id);}); }); '),
  textInput(inputId = "text1", label = NULL, value = ""),
  textInput(inputId = "text2", label = NULL, value = ""),
  textInput(inputId = "text3", label = NULL, value = ""),
  textInput(inputId = "text4", label = NULL, value = ""),
  textOutput("output1")
)

server <- function(input, output, session) {
  output$output1 <- renderText({ input$focusedElement })
}

shinyApp(ui, server)