![](/img/trans.png)
[英]Using Javascript to export data table as CSV in Shiny using shinyjs
[英]Shiny: Disable tabPanel() using shinyjs
我正在使用此處提供的@SriPaladugu 的答案來禁用tabPanel()
,我注意到如果tabPanel(title,...)
存在空格,則它不起作用。 他們編寫了自己的 JavaScript 代碼並使用了shinyjs
來啟用/禁用面板,而我不熟悉解決此問題的 JavaScript 代碼。 他們執行此操作的代碼存儲在對象jscode
; 如何修改代碼以考慮tabPanel(title,...)
空格?
library(shiny)
library(shinyjs)
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;
}"
ui <- shinyUI(fluidPage(
shinyjs::useShinyjs(),
shinyjs::extendShinyjs(text = jscode, functions = c("disableTab","enableTab")),
shinyjs::inlineCSS(css),
navbarPage("Test",id="navbarPage",
tabPanel("FirstTab", id = "first_tab",
sidebarLayout(
sidebarPanel(),
mainPanel()
)
),
tabPanel("Secondtab", id = "second_tab",
sidebarLayout(
sidebarPanel(),
mainPanel()
)
),
tabPanel("Third tab", id = "third_tab",
sidebarLayout(
sidebarPanel(),
mainPanel()
)
)
)
))
server <- shinyServer(function(input, output, session) {
# disable tabs Exposure, Covariate, and Construct on page load
shinyjs::js$disableTab("Secondtab")
shinyjs::js$disableTab("Third tab")
})
# Run the application
shinyApp(ui = ui, server = server)
我認為你可以簡化你的代碼,遵循這個答案和shinyjs::disable()
的文檔:
library(shiny)
library(shinyjs)
css <- "
.nav li a.disabled {
background-color: #aaa !important;
color: #333 !important;
cursor: not-allowed !important;
border-color: #aaa !important;
}"
ui <- shinyUI(fluidPage(
shinyjs::useShinyjs(),
shinyjs::inlineCSS(css),
navbarPage("Test",id="navbarPage",
tabPanel("FirstTab", id = "first_tab",
sidebarLayout(
sidebarPanel(),
mainPanel()
)
),
tabPanel("Secondtab", id = "second_tab",
sidebarLayout(
sidebarPanel(),
mainPanel()
)
),
tabPanel("Third tab", id = "third_tab",
sidebarLayout(
sidebarPanel(),
mainPanel()
)
)
)
))
server <- shinyServer(function(input, output, session) {
# disable tabs Exposure, Covariate, and Construct on page load
shinyjs::disable(selector = '.navbar-nav a[data-value="Secondtab"')
shinyjs::disable(selector = '.navbar-nav a[data-value="Third tab"')
})
# Run the application
shinyApp(ui = ui, server = server)
只是為了完成這個答案,要獲取data-value
,在瀏覽器中打開應用程序,按 Ctrl+Shift+C,將鼠標懸停在所需的選項卡上,然后在 Inspector 中檢查它的data-value
參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.