gpt4 book ai didi

r - 在 textInput 中选择文本/设置焦点

转载 作者:行者123 更新时间:2023-12-01 12:12:28 25 4
gpt4 key购买 nike

背景

在我的应用程序中,我有一个登录页面,其中包含用于用户名的 textInput、用于密码的 passwordInput 和用于提交的 actionButton .如果无法识别密码/用户名,我会显示一条错误消息。到目前为止,一切都很好。如果登录无效,我现在只想以编程方式选择/突出显示用户名 textInput 中的所有文本。

问题

如何选择用户名输入表单中的文本?我查看了 updateTextInput 但是我只能更改值,不能更改选择。我需要回退到 javascript 吗?

代码

library(shiny)

is_valid_user <- function(uid, pwd) {
FALSE
}

ui <- fluidPage(
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?
}})
}

shinyApp(ui = ui, server = server)

最佳答案

您好,我认为在纯 Shiny 中没有办法。如果你愿意使用一些 JS,这里有一个简单的例子,它发送和处理从 Shiny 到 JS 的自定义消息(more here)。它基本上只选择输入中的文本,但一旦你在 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))

关于r - 在 textInput 中选择文本/设置焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com