【发布时间】:2018-08-28 09:51:56
【问题描述】:
我有以下脚本,旨在打印出被单击/选中的按钮或框的行。复选框的小 javascript 代码(灵感来自另一个 SO 答案)工作得很好。但由于我是 javascript 的新手,我找不到 actionButton 的有效模拟。
library(DT)
library(glue)
ui <- fluidPage(
uiOutput("modal"),
fluidRow(
verbatimTextOutput("value1"),
verbatimTextOutput("value2"),
column(12,
DT::dataTableOutput('table'), tags$script(HTML('$(document).on("click", "input", function () {
var checkboxes = document.getElementsByName("selected");
var checkboxesChecked = [];
for (var i=0; i<checkboxes.length; i++) {
if (checkboxes[i].checked) {
checkboxesChecked.push(checkboxes[i].value);
}
}
Shiny.onInputChange("checked_rows",checkboxesChecked);
var buttons = document.getElementsByName("modified");
var buttonsPressed = [];
for (var i=0; i<buttons.length; i++) {
if (buttons[i].click) {
buttonsPressed.push(buttons[i].value);
}
}
Shiny.onInputChange("pressed_rows",buttonsPressed);
})
'))
)))
server <- function(input, output, session) {
df <- reactiveValues( data = data.frame(rownum = 1:5, stringsAsFactors = FALSE))
output$value1 <- renderPrint({ input$checked_rows })
output$value2 <- renderPrint({input$pressed_rows})
output$table <- DT::renderDataTable({
df$data[["Select"]] <- glue::glue('<input type="checkbox" name="selected" value="{1:nrow(df$data)}"><br>')
df$data[["Modify"]] <- glue::glue('<input type="button" name="modified" value="{1:nrow(df$data)}"><br>')
DT::datatable(df$data,rownames=F, escape = FALSE, select = "none")
})
}
shinyApp(ui, server)
非常感谢任何帮助!
【问题讨论】:
标签: javascript r shiny dt