Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 闪亮:如何检测选择了哪些手风琴元素?_Javascript_R_Shiny_Shinyjs - Fatal编程技术网

Javascript 闪亮:如何检测选择了哪些手风琴元素?

Javascript 闪亮:如何检测选择了哪些手风琴元素?,javascript,r,shiny,shinyjs,Javascript,R,Shiny,Shinyjs,我有一个R,其中server.R输出大量动态生成的UI对象 与其在input中处理数百个对象进行处理,我认为我可以使用包中的 我希望bs炣accorvion()通过input对象将其控制的元素状态报告回server.R 我的计划是使用renderUI()为当前选定的项目动态生成UI元素 不幸的是,据我所知,bsplus包中没有任何内容放入input 以下内容在浏览器控制台中起作用(假设accordion元素是MYACCORDION)

我有一个R,其中
server.R
输出大量动态生成的UI对象

与其在
input
中处理数百个对象进行处理,我认为我可以使用包中的

我希望
bs炣accorvion()
通过
input
对象将其控制的元素状态报告回
server.R

我的计划是使用
renderUI()
为当前选定的项目动态生成UI元素

不幸的是,据我所知,
bsplus
包中没有任何内容放入
input

以下内容在浏览器控制台中起作用(假设accordion元素是
MYACCORDION

<显然,在中,类bs给出了手风琴中当前选定的元素,并且始终只有一个元素。所以在我这样做之后,
input$SELECTED\u DIV
会在选择新内容时更新

但是我不能以编程的方式完成上面的工作。我尝试在
fluidPage()
的末尾将其放入
tags$script(…)
,但它没有连接到div。我还尝试通过
div(…,onclick=FOO)
内联插入它,但
onclick
的值被转义并在输出中,而不是解释为文本

  • ui.R
    中插入
    onclick
    函数的正确位置在哪里
  • 或者,如何强制
    onclick
    属性的值按原样处理而不转义符号
  • 或者已经有一个用于将Javascript函数附加到
    onclick
    事件的包了吗

谢谢。

我建议设置一个虚拟输入,用于保存所选选项卡的当前值(在本例中为文本)

这可能会帮助您:

library(shiny)
library(bsplus)

shinyApp(
  ui = fluidPage(
    tags$script("$(function() {
                  $('#meet_the_beatles a').on('click', function(x) {
                    Shiny.onInputChange('selected_tab', x.target.innerText)
                  });
                });"),

    fluidRow(
      column(
        width = 6,
        offset = 3,
        bs_accordion(id = "meet_the_beatles") %>%
          bs_append(title = "John", content = "Rhythm guitar, vocals") %>%
          bs_append(title = "Paul", content = "Bass guitar, vocals") %>%
          bs_append(title = "George", content = "Lead guitar, vocals") %>%
          bs_append(title = "Ringo", content = "Drums, vocals")
      )
    ),

    HTML("<input id='selected_tab' type='text' style='display: none;'")
  ),

  server = function(input, output, session) {
    observe({
      print(paste("The selected tab is", input$selected_tab))
    })
  }
)
库(闪亮)
图书馆(bsplus)
shinyApp(
ui=fluidPage(
标记$script(“$(function()){
$(“#遇见披头士a”)。在('click',函数(x){
.onInputChange('selected_tab',x.target.innerText)
});
});"),
fluidRow(
纵队(
宽度=6,
偏移量=3,
手风琴(id=“遇见披头士”)%>%
bs_追加(title=“John”,content=“节奏吉他,人声”)%>%
bs_追加(title=“Paul”,content=“低音吉他,人声”)%>%
bs_追加(title=“George”,content=“主唱吉他,人声”)%>%
B_追加(title=“Ringo”,content=“鼓、人声”)
)
),

HTML(“这看起来可能有用!我会尽快试用,看看会发生什么,谢谢你。@Yanir。非常感谢你。两年后……你的代码救了我。”。
library(shiny)
library(bsplus)

shinyApp(
  ui = fluidPage(
    tags$script("$(function() {
                  $('#meet_the_beatles a').on('click', function(x) {
                    Shiny.onInputChange('selected_tab', x.target.innerText)
                  });
                });"),

    fluidRow(
      column(
        width = 6,
        offset = 3,
        bs_accordion(id = "meet_the_beatles") %>%
          bs_append(title = "John", content = "Rhythm guitar, vocals") %>%
          bs_append(title = "Paul", content = "Bass guitar, vocals") %>%
          bs_append(title = "George", content = "Lead guitar, vocals") %>%
          bs_append(title = "Ringo", content = "Drums, vocals")
      )
    ),

    HTML("<input id='selected_tab' type='text' style='display: none;'")
  ),

  server = function(input, output, session) {
    observe({
      print(paste("The selected tab is", input$selected_tab))
    })
  }
)