gpt4 book ai didi

r - 突出显示 R Shiny 的 selectInput 项目而不单击它

转载 作者:行者123 更新时间:2023-12-02 03:29:22 25 4
gpt4 key购买 nike

是否可以制作一个响应式(Reactive) Shiny 输出,直接显示用户鼠标所指的内容?

为了说明这一点,在下面的可重现示例中,我希望这个 Shiny 应用程序能够打印鼠标光标下方的内容,而无需单击它。

library(shiny)

ui <-fluidPage(
titlePanel("Transports"),

sidebarLayout(
sidebarPanel(
selectInput("var",
label = "Variable to display when user moves the mouse over it",
choices = c("car", "boat","plane"),selected = "car")

),

mainPanel(
textOutput("selected_var")
)
)
)

server <- function(input, output) {

output$selected_var <- renderText({
paste("You have selected the", input$var)
})

}
shinyApp(ui = ui,server = server)

提前致谢

最佳答案

另一种方法,在onInitialize选项中使用一些Javascript。如果鼠标光标在某个选项上停留一秒,则表示该选项被选中。您可以选择其他延迟值。我发现延迟很有用。它允许在下拉菜单中移动光标,而无需在光标触摸时选择选项。

enter image description here

library(shiny)

jscode <- "function(){
var delay = 1000; // 1000ms = 1s
var setTimeoutConst;
$('.selectize-control')
.on('mouseenter', '.selectize-dropdown-content div .option', function(){
var $this = $(this);
clearTimeout(setTimeoutConst);
setTimeoutConst = setTimeout(function(){
$this.click();
}, delay);
}
).on('mouseleave', function(){
clearTimeout(setTimeoutConst);
});
}"
shinyApp(
ui = fluidPage(
selectizeInput("state", "Choose a state:",
list(`East Coast` = c("NY", "NJ", "CT"),
`West Coast` = c("WA", "OR", "CA"),
`Midwest` = c("MN", "WI", "IA")),
options = list(onInitialize = I(jscode))
),
textOutput("result")
),
server = function(input, output) {
output$result <- renderText({
paste("You chose", input$state)
})
}
)
}

关于r - 突出显示 R Shiny 的 selectInput 项目而不单击它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com