2016-09-16 185 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)