Как отключить кнопку на основе условия в документе R Markdown с блестящими элементами?

Предположим, у нас есть группа из 8 флажков (8 букв) и кнопка действия, которая печатает ярлык всех выбранных флажков. Что я хочу сделать, включить и отключить состояние кнопки действия в зависимости от условия. Условие состоит в том, что, если число выбранных флажков находится между 2 и 5, тогда кнопка должна быть включена, иначе отключена. Для изменения состояния кнопки я хочу использовать функции enable, disable или же toggleState функции от shinyjs пакет. А когда кнопка будет включена, я смогу вызвать событие для печати номеров выбранных предметов. Вот что я пробовал до сих пор:

---
title: "Disable Button"
runtime: shiny
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(shinyjs)
library(shiny)
```

```{r, echo=FALSE}
checkboxGroupInput("param_group", label = h3("Letters"), 
    choices = LETTERS[1:8])

actionButton('action', "Print")

result<-reactive({
  length(input$param_group)
})

observe({
  if(result()>1 & result()<=5)
    enable("action")
  else
    disable("action")
})

txt<-eventReactive(input$action,{
    cat("Number of letters selected: ",length(input$param_group))
})

renderPrint({
  txt()
})
```

1 ответ

Решение

Мне потребовалось некоторое время, чтобы найти его, но вы должны включить shinyjs чтобы явно использовать R-markdown, в этом случае он должен настроить свой javascript по-другому.

Вы делаете это по телефону: useShinyjs(rmd=T) в куске, где вы его используете.

---
title: "Disable Button"
runtime: shiny
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(shinyjs)
library(shiny)
```

```{r, echo=FALSE}
useShinyjs(rmd=T)

checkboxGroupInput("param_group", label = h3("Letters"), 
                   choices = LETTERS[1:8])

actionButton('action', "Print")


result<-reactive({
  length(input$param_group)
})

observe({
  useShinyjs()
  if(result()>1 & result()<=5){
    enable("action")
  } else {
    disable("action")
  }
})

txt<-eventReactive(input$action,{
  cat("Number of letters selected: ",length(input$param_group))
})

renderPrint({
  txt()
})

Скриншот:

Другие вопросы по тегам