在R Shiny中使用带有操作按钮的回车键

jer*_*roe 21 javascript r shiny

我正在尝试编写一个javascript函数来扩展R闪亮动作按钮演示.我希望用户能够通过单击操作按钮并在选择数字输入表单时按Enter键来输入数字.ui.R的代码是:

shinyUI(pageWithSidebar(
  headerPanel("actionButton test"),
  sidebarPanel(
    tags$head(tags$script(src = "enter_button.js")), 
    numericInput("number", "N:", min = 0, max = 100, value = 50),
    br(),
    actionButton("goButton", "Go!"),
    p("Click the button to update the value displayed in the main panel.")
  ),
  mainPanel(
    verbatimTextOutput("nText")
  )
))
Run Code Online (Sandbox Code Playgroud)

和server.R:

shinyServer(function(input, output) {
 ntext <- eventReactive(input$goButton, {
    input$number
  })

  output$nText <- renderText({
    paste(ntext(), input$goButton)
  })
})
Run Code Online (Sandbox Code Playgroud)

我在www /文件夹中的一个名为enter_button.js的文件中包含以下javascript:

$("#number").keyup(function(event){
    if(event.keyCode == 13){
        $("#goButton").click();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,选择数字输入表单并点击输入操作按钮不会增加,但如果我点击它会增加.或者,我也测试了只需按下输入文档的任何位置:

$(document).keyup(function(event){
    if(event.keyCode == 13){
        $("#goButton").click();
    }
});
Run Code Online (Sandbox Code Playgroud)

这很有效,所以我怀疑jQuery找不到#number元素.提前致谢!

jer*_*roe 23

我能够使用jQuery is(":focus")函数解决这个问题,我使用的代码是:

$(document).keyup(function(event) {
    if ($("#number").is(":focus") && (event.key == "Enter")) {
        $("#goButton").click();
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 对于像我这样的新手:文件 enter_button.js 必须放在 Shiny 应用程序顶层的 www 文件夹中。 (6认同)
  • 还有一个适合像我这样的新手!您需要将 `tags$script(src = "enter_button.js"),` 添加到您的 ui 页面。 (2认同)