在闪亮中选择onChange

时间:2016-09-16 20:04:33

标签: r shiny selectize.js

我想在闪亮的aselectize小部件中选择一个选项时触发一些功能。但是,我不想触发功能服务器端,而是在客户端。观察和观察事件是在服务器端(server.R)工作,但这不是我想要的。

我尝试过以下但是在ui.R

中没有用
  tags$script('
              $( document ).ready(function() {
                $("#fTICKER4").selectize({
                      onChange: function () {
                      alert("Selectize event: Change");
                  }
              });
            '),

请提出光明前进的方法

1 个答案:

答案 0 :(得分:4)

如果要在窗口小部件的值发生更改时触发某些javaScript函数,则应查看this文章。你会发现很多支持闪亮的javaScript事件。

让我们看一下shiny:inputchanged事件,因为它可以做你想要的事情:

  

事件闪亮:当输入具有新值时触发inputchanged,例如,当您单击操作按钮或键入文本输入时。事件对象具有属性名称(输入的id),值(输入的值)和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)