R抑制sliderInput的滑块手柄,直到单击为止

R抑制sliderInput的滑块手柄,直到单击为止,r,shiny,slider,R,Shiny,Slider,我试图在一个闪亮的应用程序中制作一个简单的视觉模拟比例。这些类型的刻度是简单的滑块,不向用户提供任何信息,以避免偏差响应(无刻度,无标签)。我设法得到了想要的结果,除了一个:隐藏滑块的手柄,直到用户单击滑块。我知道我可以通过使用.irs slider{display:none;}隐藏句柄,但我希望它在用户单击滑块时显示,并在用户单击的点(在值处)显示 这是我到现在为止写的: library(shiny) server <-function(input, output) { outp

我试图在一个闪亮的应用程序中制作一个简单的视觉模拟比例。这些类型的刻度是简单的滑块,不向用户提供任何信息,以避免偏差响应(无刻度,无标签)。我设法得到了想要的结果,除了一个:隐藏滑块的手柄,直到用户单击滑块。我知道我可以通过使用
.irs slider{display:none;}
隐藏句柄,但我希望它在用户单击滑块时显示,并在用户单击的点(在值处)显示

这是我到现在为止写的:

library(shiny)

server <-function(input, output) {

  output$value <- renderPrint({ input$slider1 })

}


ui <- fixedPage(
  tags$style(type = "text/css", "
      .irs-bar {display: none;}
      .slidecontainer { width: 100%; }
      .irs-bar-edge {display: none;}
      .irs-grid-pol {display: none;}
      .irs-slider {width: 10px; height: 20px; top: 20px;}
      .irs-from, .irs-to, .irs-min, .irs-max { visibility: hidden !important;   }
      .irs-single {visibility: hidden !important; }
  "),

  titlePanel("Title"),
  br(),
  h4("Please respond"),

  fluidRow(
    column(12, align="center",

       sliderInput(
         inputId = "slider1", 
         label = h3("Slider"), 
         min=0, max=100, value=50,
         ticks=FALSE,
         width="100%"
       )
    )
  ),

  br(),

  fluidRow(
  column(4, verbatimTextOutput("value"))
  )

)

shinyApp(ui, server)
库(闪亮)

服务器这里是一个使用
shinyjs
包的解决方案,它提供了向应用程序添加javascript代码的功能

我已经在css块中添加了
.irs-slider.single{opacity:0;}
,以便在页面加载时使句柄透明。js代码位于服务器部分的
runjs
中,当单击
.irs
div时,它使用jquery将句柄不透明度更改为1;如果你想的话,你可以把它变成一个更具体的页面元素,但是
.irs line
似乎不适合我

您还需要在UI中的某个位置添加
useShinyjs()

library(shiny); library(shinyjs)

server <-function(input, output) {

  output$value <- renderPrint({ input$slider1 })
  runjs("$( '.irs').click(function(){$('.irs-slider.single').css('opacity', 1)})")
}


ui <- fixedPage(
  tags$style(type = "text/css", "
             .irs-bar {display: none;}
             .irs-slider.single { opacity: 0;}
             .slidecontainer { width: 100%; }
             .irs-bar-edge {display: none;}
             .irs-grid-pol {display: none;}
             .irs-slider {width: 10px; height: 20px; top: 20px;}
             .irs-from, .irs-to, .irs-min, .irs-max { visibility: hidden !important;   }
             .irs-single {visibility: hidden !important; }
             "),
  useShinyjs(),



  titlePanel("Title"),
  br(),
  h4("Please respond"),

  fluidRow(
    column(12, align="center",

       sliderInput(
         inputId = "slider1", 
         label = h3("Slider"), 
         min=0, max=100, value=50,
         ticks=FALSE,
         width="100%"
       )
    )
  ),

  br(),

  fluidRow(
  column(4, verbatimTextOutput("value"))
  )

)

shinyApp(ui, server)
库(闪亮);图书馆(shinyjs)

谢谢。对我来说,它需要2次点击-第一次点击irs使不透明度变为1,你需要另一次才能真正看到手柄。然后,我按照您的建议更改了
runjs($('.irs行')。单击(function(){$('.irs slider.single').css('opacity',1'))
,现在它完全按照预期工作。我很好奇为什么它对你不起作用。不过,非常感谢。