gpt4 book ai didi

javascript - 在DT中添加多个 radio 组

转载 作者:行者123 更新时间:2023-12-02 22:39:31 25 4
gpt4 key购买 nike

我一直想知道是否可以在 Shiny 的 DT 表中添加两个(或更多)单选组按钮。从这一页来看,添加一个似乎非常简单:https://rstudio.github.io/DT/011-radio.html

尽管如此,我正在努力解决添加两个 radio 组的可能性。这是我的代码:

library(shiny)
ui <- bootstrapPage(DT::dataTableOutput("DT_table"))

server <- function(input, output) {

output$DT_table <- DT::renderDataTable({
m <- matrix(
as.character(1:5), nrow = 12, ncol = 5, byrow = TRUE,
dimnames = list(month.abb, LETTERS[1:5])
)

n <- matrix(
as.character(1:5), nrow = 12, ncol = 5, byrow = TRUE,
dimnames = list(month.abb, paste("P", LETTERS[1:5], sep = "_"))
)
for (i in seq_len(nrow(m))) {
m[i, ] = sprintf(
'<input type="radio" name="%s" value="%s"/>',
month.abb[i], m[i, ]
)
}

for (i in seq_len(nrow(n))) {
n[i, ] = sprintf(
'<input type="radio" name="%s" value="%s"/>',
paste0("T2", month.abb[i]), n[i, ]
)
}

dataset <- as.data.frame(cbind(m, n))
DT::datatable(dataset, selection = 'none', escape = FALSE, options = list(dom = 't', paging = FALSE, ordering = FALSE),
callback = DT::JS("table.rows().every(function(i, tab, row) {
var $this = $(this.node());
$this.attr('id', this.data()[0]);
$this.addClass('shiny-input-radiogroup');
});
Shiny.unbindAll(table.table().node());
Shiny.bindAll(table.table().node());")
)}, server = FALSE)

observe({
print(input$Jan)
print(input$T2Jan)
})
}

shinyApp(ui = ui, server = server)

我清楚地看到问题来 self 的回调参数,该参数将shiny-input-radiogroup/id应用于整行,而不是每行的每个radiogroup。正如你所看到的,我的输入 $T2Jan 始终为 NULL。我对 javascript 很陌生,所以我不知道从哪里开始。

您认为通过一点点 JavaScript 操作是可行的,还是在第一个数据表旁边创建另一个数据表更好?

最佳答案

您可以使用此回调:

callback <- c(
" $('input[type=radio]').on('click', function(){",
" var name = $(this).attr('name');",
" var value = $('input[name=' + name + ']:checked').val();",
" Shiny.setInputValue(name, value);",
" });"
)

和:

DT::datatable(dataset, selection = 'none', escape = FALSE, 
options = list(dom = 't', paging = FALSE, ordering = FALSE),
callback = JS(callback)
)

关于javascript - 在DT中添加多个 radio 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58629955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com