【问题标题】:Running JS Commands on a Shiny Markdown Document在闪亮的 Markdown 文档上运行 JS 命令
【发布时间】:2021-04-12 16:33:49
【问题描述】:

我正在尝试实现 Stephane Laurent 的 solution,以要求在 Shiny Markdown 文档中选择最少数量的选择器输入,但无法弄清楚如何运行 java 脚本组件。谁能告诉我我将jstags$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


    【解决方案1】:

    我没有尝试过,但我认为你可以包含一个 JavaScript 块:

    ```{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');
      });
    });
    ```
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-09
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2019-07-26
      • 2019-03-29
      相关资源
      最近更新 更多