Триггерная клавиша actionButton с блестящей клавиатурой с помощью uiOutput - PullRequest
0 голосов
/ 17 апреля 2019

Мне нравится запускать actionButton при нажатии клавиши Enter на клавиатуре в блестящем приложении. Это работает, когда я помещаю actionButton в пользовательский интерфейс, но это не работает при использовании с uiOutput.

library(shiny)

jscode <- '
$(function() {
var $els = $("[data-proxy-click]");
$.each(
$els,
function(idx, el) {
var $el = $(el);
var $proxy = $("#" + $el.data("proxyClick"));
$el.keydown(function (e) {
if (e.keyCode == 13) {
$proxy.click();
}
});
}
);
});
'

ui <- fluidPage(
  tags$head(tags$script(HTML(jscode))),
  uiOutput("ui")
)

server <- function(input, output, session) {
  output$ui <- renderUI({
    tagList(
      tagAppendAttributes(passwordInput("user_pw", "Passwort",
                                        value = ""),
                          `data-proxy-click` = "user_login"
      ),
      actionButton("user_login", "Anmelden")
    )
  })

  observeEvent(input$user_login, {
    cat("clicked", "\n")
  })
}

shinyApp(ui, server)

1 Ответ

2 голосов
/ 17 апреля 2019

Это должно сделать:

library(shiny)

jscode <- '$(document).keyup(function(e) {
    if (e.key == "Enter") {
    $("#user_login").click();
}});'

ui <- fluidPage(
  tags$head(tags$script(HTML(jscode))),
  uiOutput("ui")
)

server <- function(input, output, session) {

  output$ui <- renderUI({
    tagList(
      tagAppendAttributes(passwordInput("user_pw", "Password",value = ""),`data-proxy-click` = "user_login"
      ),
      actionButton("user_login", "Anmelden")
    )
  })

  observeEvent(input$user_login, {
    cat("clicked", "\n")
  })
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...