【发布时间】:2021-04-12 16:33:49
【问题描述】:
我正在尝试实现 Stephane Laurent 的 solution,以要求在 Shiny Markdown 文档中选择最少数量的选择器输入,但无法弄清楚如何运行 java 脚本组件。谁能告诉我我将js 和tags$head... 对象放在哪里以使其正确运行?
使用传统闪亮应用的解决方案
library(shiny)
library(shinyWidgets)
js <- "
$(document).ready(function(){
$('#somevalue').on('show.bs.select', function(){
$('a[role=option]').on('click', function(e){
var selections = $('#somevalue').val();
if(selections.length === 1 && $(this).hasClass('selected')){
e.stopImmediatePropagation();
};
});
}).on('hide.bs.select', function(){
$('a[role=option]').off('click');
});
});"
ui <- fluidPage(
tags$head(tags$script(HTML(js))),
pickerInput(
inputId = "somevalue",
label = "A label",
choices = c("a", "b"),
selected = "a",
multiple = TRUE
),
verbatimTextOutput("value")
)
server <- function(input, output) {
output$value <- renderPrint(input$somevalue)
}
shinyApp(ui, server)
闪亮的 Markdown 文档包装器不起作用
---
runtime: shiny
output:
html_document
---
```{r echo = F, message = F, warning = F, error = F}
library(shiny)
library(shinyWidgets)
js <- "
$(document).ready(function(){
$('#somevalue').on('show.bs.select', function(){
$('a[role=option]').on('click', function(e){
var selections = $('#somevalue').val();
if(selections.length === 1 && $(this).hasClass('selected')){
e.stopImmediatePropagation();
};
});
}).on('hide.bs.select', function(){
$('a[role=option]').off('click');
});
});"
tags$head(tags$script(HTML(js)))
pickerInput(
inputId = "somevalue",
label = "A label",
choices = c("a", "b"),
selected = "a",
multiple = TRUE
)
```
【问题讨论】:
标签: r shiny r-markdown