Javascript 闪亮:如何检测选择了哪些手风琴元素?
我有一个R,其中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)
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))
})
}
)