r - R Shiny:如何通过复选框禁用/启用滑块?
问题描述
以下代码生成了一个包含三个滑块和三个复选框的示例。
如果勾选了一个复选框,则应禁用下面的滑块。这意味着滑块不应再修改所选值。
此外,所有滑块值的总和不应超过最大值,在本例中为 10。
library(shiny)
u <- shinyUI(fluidPage(
titlePanel("title panel"),
sidebarLayout(position = "left",
sidebarPanel("sidebar panel",
checkboxInput("check1", "disable/enable", value = T),
sliderInput("slider1","value 1",min=1,max=10,value=3),
checkboxInput("check2", "disable/enable", value = F),
sliderInput("slider2","Value 2",min=1,max=10,value=3),
checkboxInput("check3", "disable/enable", value = F),
sliderInput("slider3","Value 3",min=1,max=10,value=3)
),
mainPanel("main panel")
)))
s <- shinyServer(function(input, output){})
shinyApp(u,s)
解决方案
也许这将满足您的需求
u <- fluidPage(
useShinyjs(),
sidebarPanel("sidebar panel",
checkboxInput("check1", "disable/enable", value = F),
uiOutput("slidr1"),
checkboxInput("check2", "disable/enable", value = F),
uiOutput("slidr2"),
checkboxInput("check3", "disable/enable", value = F),
uiOutput("slidr3")
),
mainPanel("main panel")
)
s <- function(input, output, session){
output$slidr1 <- renderUI({
sliderInput("slider1","Value 1",min=1,max=8,value=3)
})
output$slidr2 <- renderUI({
req(input$slider1)
max2 <- reactive({9-(input$slider1 )})
sliderInput("slider2","Value 2",min=1,max=max2(),value=3)
})
output$slidr3 <- renderUI({
req(input$slider1,input$slider2)
max3 <- reactive({10-(input$slider1 + input$slider2)})
sliderInput("slider3","Value 3",min=1,max=max3(),value=3)
})
# Want the initial state of this button to be disabled?
#shinyjs::disable(id="slider1")
observeEvent(input$check1,{
if (input$check1) shinyjs::disable(id="slider1")
else shinyjs::enable(id="slider1")
})
observeEvent(input$check2,{
if (input$check2) shinyjs::disable(id="slider2")
else shinyjs::enable(id="slider2")
})
observeEvent(input$check3,{
if (input$check3) shinyjs::disable(id="slider3")
else shinyjs::enable(id="slider3")
})
}
shinyApp(ui=u, server=s)
推荐阅读
- java - Spark Kubernetes - 使用 --files 或 spark.files 将配置文件从驱动程序复制到执行程序时出现 FileNotFoundException
- node.js - 删除 Mongodb 对象中的数组对象
- debugging - 我应该为 Typo3 使用 Visual Studio Code 中的哪些扩展(语法突出显示、识别关键字、自动完成……)
- python - 启动游戏后看不到敌人的精灵
- java - Java生成词表
- javascript - 等待组件在自定义 svelte 指令中准备就绪
- python - 在numpy数组中找到一个值上方和下方的最近值
- discord - Discord:如何在消息回复中启用斜杠命令?
- reactjs - react-calender defaultStartDate面临问题
- apache-spark - Spark RAPIDS - 操作未替换为 GPU 版本