#javascript #r #shiny
#javascript #r #блестящий
Вопрос:
Мне нравится запускать 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:
Это должно сделать:
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)
Комментарии:
1. Спасибо, значит, мне нужно ссылаться на название кнопки в jscode?