繁体   English   中英

如何基于带有闪亮元素的R Markdown文档中的条件来禁用按钮?

[英]How to disable button based on a condition in a R Markdown document with shiny elements?

假设我们有一组8个复选框(8个字母)和一个操作按钮,该按钮将打印所有选定复选框的标签。 我想做的是根据条件启用和禁用操作按钮的状态。 条件是,如果所选复选框的数量在2到5之间,则应该启用该按钮,否则禁用该按钮。 为了更改按钮的状态,我想使用shinyjs包中的功能enabledisabletoggleState功能。 启用该按钮后,我将能够触发一个事件以打印所选项目的数量。 这是我到目前为止尝试过的方法:

---
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()
})
```

花了我一段时间才能找到它,但您必须启用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()
})

屏幕截图:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM