R shiny updateSelectizeInput custom HTML tags for labels

丶灬走出姿态 提交于 2019-12-24 01:19:04

问题


Is there a way to use HTML tags (e.g. h6) for updateSelectizeInput (which is working for selectInput, see code below)? With the code below simply using h6("Label") in the updateSelectizeInput [object Object] is shown as output.

rm(list = ls())
library(shiny)



ui =fluidPage(
  selectizeInput('DropDownSelectize',choices=NULL,label=""),
  selectInput('DropDownSelect',choices = c("choice1","choice2","choice3"),
  label=h6("Label"))
 )

server = function(input, output, session) {

 observe({
   updateSelectizeInput(session, 
                     'DropDownSelectize',
                      label = h6("Label"),
                      choices = c("choice1","choice2","choice3"),
                      selected = "choice1",
                      server = TRUE)

 })


}
runApp(list(ui = ui, server = server))

Thanks


回答1:


If the label is going to be always the same, just don't set a value for label on updateSelectizeInput. Actually, you should only set the parameters that you want to change.

By instance, this is only changing the selected value:

updateSelectizeInput(session, 'DropDownSelectize', selected = "choice3")

If the value of label needs to be changed but with a tag or style, like in this case h6, you can use shinyjs to change only the text of the label. For that purpose you need to add an id to the h6 tag. See the example below where inside the first observer the label is changed using the html function of shinyjs. I also added two buttons to manually change the text of the label.

library(shiny)
library(shinyjs)

ui =fluidPage(
  shinyjs::useShinyjs(), # to initialize shinyjs
  selectizeInput('DropDownSelectize',choices=NULL,label=h6("", id = "labelText")),
  selectInput('DropDownSelect',choices = c("choice1","choice2","choice3"),
  label=h6("Label")),
  actionButton("useLabel1", "Use Label 1"),
  actionButton("useLabel2", "Use Label 2")
 )

server = function(input, output, session) {
  observe({
    updateSelectizeInput(session, 
                     'DropDownSelectize',
                      # label = h6("Label"), # no needed 
                      choices = c("choice1","choice2","choice3"),
                      selected = "choice1",
                      server = TRUE)
    shinyjs::html("labelText", "Label")
  })

  observeEvent(input$useLabel1, {
    shinyjs::html("labelText", "Label 1")
  })  

  observeEvent(input$useLabel2, {
    shinyjs::html("labelText", "Label 2")
  })  

}
runApp(list(ui = ui, server = server))


来源:https://stackoverflow.com/questions/40341804/r-shiny-updateselectizeinput-custom-html-tags-for-labels

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!