我正在尝试编写一个javascript函数来扩展R Shiny action button demo 。我希望用户能够通过单击操作按钮并在选择数字输入表单时按 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")
)
))
和服务器.R:
shinyServer(function(input, output) {
ntext <- eventReactive(input$goButton, {
input$number
})
output$nText <- renderText({
paste(ntext(), input$goButton)
})
})
我在 www/文件夹中名为 Enter_button.js 的文件中包含了以下 JavaScript:
$("#number").keyup(function(event){
if(event.keyCode == 13){
$("#goButton").click();
}
});
但是,当我运行应用程序时,选择数字输入表单并按回车键,操作按钮不会增加,但如果单击它,它就会增加。或者,我还测试了只需在文档中的任意位置按 Enter 键即可:
$(document).keyup(function(event){
if(event.keyCode == 13){
$("#goButton").click();
}
});
这有效,所以我怀疑 jQuery 找不到 #number 元素。提前致谢!
最佳答案
我能够使用 jQuery is(":focus")
函数解决这个问题,我使用的代码是:
$(document).keyup(function(event) {
if ($("#number").is(":focus") && (event.key == "Enter")) {
$("#goButton").click();
}
});
关于javascript - 在 R Shiny 中使用 Enter 键和操作按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335951/