gpt4 book ai didi

r - 从另一个 tabpanel 激活 tabpanel

转载 作者:行者123 更新时间:2023-12-03 09:50:04 27 4
gpt4 key购买 nike

我希望当我启动应用程序时,选项卡面板 tab2 = 已停用,
一旦我单击第一个选项卡面板 tab1 中的按钮,就会被激活,
我尝试过使用 Shinyjs 和 CSS 属性,但我做不到。

感谢您的帮助
亚历克斯

library(shiny)
library(shinyjs)
runApp(list(
ui = bootstrapPage(
tabsetPanel(
tabPanel(title = "tab1", id="tab1",
br(),
actionButton("click", label = "View tab2 panel")),
tabPanel(title = "tab2", id="tab2")
)
),
server = function(input, output, session){
}
))

最佳答案

你需要一点javascript来做到这一点。这是使用shinyjs的解决方案。我还包含了一些 css 以明确禁用选项卡时

jscode <- "
shinyjs.disableTab = function(name) {
var tab = $('.nav li a[data-value=' + name + ']');
tab.bind('click.tab', function(e) {
e.preventDefault();
return false;
});
tab.addClass('disabled');
}

shinyjs.enableTab = function(name) {
var tab = $('.nav li a[data-value=' + name + ']');
tab.unbind('click.tab');
tab.removeClass('disabled');
}
"

css <- "
.nav li a.disabled {
background-color: #aaa !important;
color: #333 !important;
cursor: not-allowed !important;
border-color: #aaa !important;
}"

library(shiny)
library(shinyjs)
runApp(list(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jscode),
inlineCSS(css),
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1", id = "tab1",
br(),
actionButton("btn", label = "View tab2 panel")),
tabPanel(title = "tab2", id = "tab2")
)
),
server = function(input, output, session) {

# disable tab2 on page load
js$disableTab("tab2")

observeEvent(input$btn, {
# enable tab2 when clicking the button
js$enableTab("tab2")
# switch to tab2
updateTabsetPanel(session, "navbar", "tab2")
})
}
))

您也可以将 javascript 放在单独的文件中并使用 extendShinyjs(file = ...)而不是 extendShinyjs(text = ...) .

关于r - 从另一个 tabpanel 激活 tabpanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703241/

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