Last active
August 18, 2022 17:45
-
-
Save xiaodaigh/6810928 to your computer and use it in GitHub Desktop.
Shiny: Disable Button
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(shiny) | |
disableActionButton <- function(id,session) { | |
session$sendCustomMessage(type="jsCode", | |
list(code= paste("$('#",id,"').prop('disabled',true)" | |
,sep=""))) | |
} | |
shinyServer(function(input, output,session) { | |
observe({ | |
if(input$btn1 == 0) return() | |
disableActionButton("btn2",session) | |
}) | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(shiny) | |
shinyUI(basicPage( | |
tags$head(tags$script(HTML(' | |
Shiny.addCustomMessageHandler("jsCode", | |
function(message) { | |
console.log(message) | |
eval(message.code); | |
} | |
); | |
'))) | |
,actionButton("btn1","Disable the other button") | |
,actionButton("btn2","Button") | |
) | |
) |
Thank you Dean, that was very helpful
can we do a similar one to enable a disabled button like below:
enableActionButton <- function(id,session) { session$sendCustomMessage(type="jsCode", list(code= paste("$('#",id,"').prop('enabled',true)" ,sep=""))) }
Hi, unfortunately the last comment didn't work for me. It should be as below - the property to change is still the 'disabled' property
enableActionButton <- function(id,session) {
session$sendCustomMessage(type="jsCode",
list(code= paste("$('#",id,"').prop('disabled',false)"
,sep="")))
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, you can disable select inputs (and almost any other input) using my new package shinyjs with a simple function call
shinyjs::disable(id)
https://github.com/daattali/shinyjs
Example:
The reason disabling selectize inputs and some other inputs don't just work is because they use a special javascript library to construct the tag instead of plain HTML.
shinyjs
is meant to help shiny app developers do these kinds of small tasks with normal R code instead of fiddling with javsacript