r - Disable textInput based on radio button selection on Shiny -
say have following shiny app:
library(shiny) ui <- fluidpage( column(3, radiobuttons("radios", "", c("enabled" = "enabled", "disabled" = "disabled"), inline = true) ), column(4, textinput("text", "", value = "disable me")) ) server <- function(input, output) { } shinyapp(ui=ui, server=server)
what's easiest way disable textinput
based on selected radio button? know have add ... disabled />
input
tag, have no idea on how in shiny.
i tried building full tag "manually" pasting html string, selected radio value , rest of html, using uioutput
, renderui
(based on this), didn't work.
the textinput
generates this:
<input id="text" type="text" class="form-control" value="disable me"/>
and need able switch between above , this:
<input id="text" type="text" class="form-control" value="disable me" disabled />
you session$sendcustommessage
on server (which generates javascript disables or enables text box) , shiny.addcustommessagehandler
in ui (which executes javascript).
library(shiny) ui <- fluidpage( tags$head(tags$script(html(' shiny.addcustommessagehandler("jscode", function(message) { eval(message.code); } ); '))), column(3, radiobuttons("radios", "", c("enabled" = "enabled", "disabled" = "disabled"), inline = true) ), column(4, textinput("text", "", value = "disable me")) ) server <- function(input, output, session) { observe({ if(input$radios == "disabled") { session$sendcustommessage(type="jscode", list(code= "$('#text').prop('disabled',true)")) } else { session$sendcustommessage(type="jscode", list(code= "$('#text').prop('disabled',false)")) } }) } shinyapp(ui=ui, server=server)
Comments
Post a Comment