如果您想在小部件的值更改时触发一些 javaScript 函数,那么您应该查看this 文章。你会发现有很多在 shiny 中也支持的 javaScript 事件。
让我们看一下 shiny:inputchanged 事件,因为它可以满足您的要求:
当输入具有新值时触发事件 shiny:inputchanged,例如,当您单击操作按钮或键入文本输入时。事件对象具有属性 name(输入的 id)、value(输入的值)和 inputType(输入的类型,例如 shiny.action)。
还有一个很好的例子
$(document).on('shiny:inputchanged', function(event) {
if (event.name === 'foo') {
event.value *= 2;
}
});
可以通过更改小部件的 ID 并将 event.value... 替换为 alert 函数来轻松调整。据我了解您的问题,您正在寻找这段代码:
$(document).on("shiny:inputchanged", function(event) {
if (event.name === "fTICKER4") {
alert("inputchanged event: Change");
}
});
完整示例
library(shiny)
ui <- fluidPage(
tags$script('
$(document).on("shiny:inputchanged", function(event) {
if (event.name === "fTICKER4") {
alert("inputchanged event: Change");
}
});
'),
sliderInput("fTICKER4", "Change triggers an event", min = 1, max = 10, value = 5),
sliderInput("other", "Change doesn't trigger an event", min = 1, max = 10, value = 5)
)
server <- function(input, output) {
}
shinyApp(ui, server)