用javascript在击键时更新单选按钮

用javascript在击键时更新单选按钮,javascript,r,radio-button,shiny,Javascript,R,Radio Button,Shiny,每次在键盘上按下q时,以下代码应将按钮更新为opt2: library(shiny) fun <- "$(function(){ $(document).keyup(function(e) { if (e.which == 81) { $('#button_2').prop('checked',true) } }); })" runApp(shinyApp( ui = fluidPage( tag

每次在键盘上按下
q
时,以下代码应将
按钮更新为
opt2

library(shiny)

fun <- "$(function(){ 
      $(document).keyup(function(e) {
      if (e.which == 81) {
        $('#button_2').prop('checked',true)
      }
      });
      })"

runApp(shinyApp(
  ui = fluidPage(
    tags$script(HTML(fun)),
    radioButtons("button", "A radio button", choices = list("opt1" = 1, "opt2" = 2)),
    textOutput("text")),
  server=function(input, output, session) {
    output$text <- renderText({input$button})
  }
))
库(闪亮)

有趣我附上了你单选按钮的HTML布局截图。链接的解决方案的问题在于它通过ID引用按钮,但您尚未为单选按钮设置ID。下面是一个可能的解决方案。

然后更新服务器功能,以创建单选按钮更改的观察者:

  server=function(input, output, session) {
    output$text <- renderText({input$button})
    observe({
      output$text <- renderText({input$button})
    })
  }
server=功能(输入、输出、会话){
输出$text
fun <- "$(function() {
  $(document).keyup(function(e) {
    if (e.which == 81) {
      var $radioButtons = $('input:radio[name=button]');
      $radioButtons.filter('[value=2]').prop('checked', true);
      Shiny.onInputChange('button', 2);
    }
})
});"
  server=function(input, output, session) {
    output$text <- renderText({input$button})
    observe({
      output$text <- renderText({input$button})
    })
  }