Shiny
是一个用于构建交互式Web应用程序的R包。modalDialog
是Shiny中的一个函数,用于创建模态对话框(modal dialog),这种对话框会阻止用户与其他界面元素交互,直到对话框被关闭。
在Shiny中,可以使用JavaScript来控制焦点。以下是一个示例代码,展示如何在modalDialog
中设置焦点到输入框:
library(shiny)
ui <- fluidPage(
actionButton("showModal", "Show Modal Dialog"),
modalDialog(
textInput("inputField", "Enter something:"),
footer = tagList(
actionButton("closeModal", "Close")
)
)
)
server <- function(input, output, session) {
observeEvent(input$showModal, {
showModal(modalDialog(
textInput("inputField", "Enter something:"),
footer = tagList(
actionButton("closeModal", "Close")
)
))
# 使用JavaScript设置焦点
session$sendCustomMessage(type = 'setFocus', message = 'inputField')
})
observeEvent(input$closeModal, {
removeModal()
})
}
# 注册JavaScript函数
jsCode <- "
Shiny.addCustomMessageHandler('setFocus', function(id) {
var element = document.getElementById(id);
if (element) {
element.focus();
}
});
"
runApp(list(ui = ui, server = server), launch.browser = TRUE)
在Shiny中,默认情况下,模态对话框打开时不会自动设置焦点到特定的输入控件。为了实现这一点,需要使用JavaScript来手动设置焦点。
通过上述代码和解释,你应该能够在Shiny应用中成功地将焦点设置到modalDialog
中的输入框。
领取专属 10元无门槛券
手把手带您无忧上云