2016-09-16 99 views
2

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

我试过以下,但它并没有ui.R工作

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

请提出今后闪亮

回答

3

的路要走,如果要触发一些JavaScript功能时的一个小部件的值改变那么你应该看看this文章。你会发现很多支持闪亮的javaScript事件。

让我们来看看一个shiny:inputchanged事件,因为它你想要做什么:

事件闪亮的:把inputChanged当输入了一个新值,触发例如,当您单击动作按钮,或键入一个文本输入。事件对象具有属性名称(输入的id),值(输入的值)和inputType(输入的类型,例如shiny.action)。

有一个很好的例子,以及

$(document).on('shiny:inputchanged', function(event) { 
    if (event.name === 'foo') { 
    event.value *= 2; 
    } 
}); 

它可通过改变窗口小部件的ID和与alert功能替换event.value...可以容易地调整。所以,据我理解你的问题,你正在寻找这个块代码:

$(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)