javascript - 在 DT 中添加多个无线电组
问题描述
我一直想知道是否可以在闪亮的 DT 表中添加两个(或更多)单选组按钮。从这个页面来看,添加一个似乎很简单:https ://rstudio.github.io/DT/011-radio.html
尽管如此,我还是在为添加两个无线电组的可能性而苦苦挣扎。这是我的代码:
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)
我清楚地看到问题来自我的回调参数,它将闪亮输入无线电组/ID 应用于整行而不是每行的每个无线电组。如您所见,我的 input$T2Jan 始终为 NULL。我对javascript真的很陌生,所以我不知道从哪里开始。
您认为通过一点 javascript 操作是可行的,还是在第一个数据表旁边创建另一个数据表更好?
解决方案
你可以使用这个callback
:
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 - 反应:ProgressiveMobileStepper handleNext 功能不起作用(材料 UI)
- opengl - 将 ImGui 与 OpenGL 一起使用时出现错误
- json - Spring - 忽略请求中的 JSON 属性,但不响应响应
- google-app-engine - 将 Next.js 部署到 Google Cloud 时出现 500 错误
- php - 同一站点上同一数据库的多个表
- php - WP 插件中可爱的文件浏览器 - $.get 不检索 php 文件
- python - OSError: [Errno 9] 勒索软件攻击后文件描述符错误
- c# - 如何在聚焦时使用代码更改富编辑框的背景?
- swift - 避免在 Swift Combine 框架中强制展开
- jquery - 这个 jQuery addClass 有什么问题