Привет, я думаю, что нет никакого способа обойтись в чистом сиянии.Если вы хотите использовать JS, вот простой пример, который отправляет и обрабатывает пользовательское сообщение из Shiny в JS ( здесь ).По сути, он выбирает только текст на входе, но если вы находитесь на стороне JS, вы можете делать практически все, что захотите.Ура!
library(shiny)
is_valid_user <- function(uid, pwd) {
FALSE
}
ui <- fluidPage(
tags$head(
tags$script("
Shiny.addCustomMessageHandler('selectText', function(message) {
$('#uid').select();
});
")
),
textInput("uid", "Username:"),
passwordInput("pwd", "Password"),
actionButton("ok", "Login"),
div(textOutput("error"))
)
server <- function(input, output, session) {
observeEvent(input$ok, {
if (!is_valid_user(req(input$uid), req(input$pwd))) {
output$error <- renderText("Username/password incorrect!")
## TODO: select all text in textInput("uid"), but HOW?
session$sendCustomMessage("selectText", "select")
}})
}
shinyApp(ui = ui, server = server, options = list(port = 5555))