在闪亮的数据表列中启用智能搜索

问题描述 投票:0回答:1

我实现了以下闪亮的表格,用户可以在其中过滤整个表格或特定列。但是,虽然智能搜索适用于整个表的搜索,但我无法启用对列的智能搜索。有人可以给我一个提示,我可以做什么来为列启用智能搜索吗?先感谢您。

output$shiny_table =
   DT::renderDT({

     # Show the filtered data table
     DT::datatable(

        # Call the filtered table as function
        data = table_filtered(),

        # Load and include extension modules
        extensions = c("FixedHeader"),

        # Each column has its own search box
        filter = list(position = "top",
                      clear = TRUE,
                      plain = TRUE),

        # Further options
        options = list(

           # Mark found search terms
           searchHighlight = TRUE,
           search = list(smart = TRUE, regex = TRUE, caseInsensitive = TRUE),

           # Special column properties
           columnDefs = list(
           
              # For specific columns: enable smart search
              list(targets = c("Title", "Authors", "Journal"),
                   search = list(smart = TRUE, regex = TRUE, caseInsensitive = TRUE)),

              # For specific columns: hide the search fields
              list(targets = c(" ", "Year", "Type", "Citations", "DOI"),
                   searchable = FALSE)
           )
        )
     )

   }, server = TRUE)
jquery r shiny dt
1个回答
0
投票

search
中没有
columnDefs
选项。你可以试试这个:

library(DT)

js <- c(
  "function(settings) {",
  "  var instance = settings.oInstance;",
  "  var table = instance.api();",
  "  var $inputs = instance.parent().find('.form-group input');",
  "  $inputs.off('keyup search input').on('keyup', function() {",
  "    var value = $(this).val();",
  "    if(value !== '') {",
  "      var index = 1 + $inputs.index(this);", # add one if row names
  "      var column = table.column(index);",
  "      column.search(value, false, true, true).draw();", # options: regex, smart, case insensitive
  "    }",
  "  });",
  "}"
)

dat <- data.frame(
  car = c("Mazda", "Mazda RX4", "Mazda RX4 Wag", "Ford", "Mercedes"),
  pet = c("dog", "dog", "cat", "cat", "cat"),
  day = Sys.Date() + 0:4
)

datatable(
  dat, filter = "top", 
  options = list(
    initComplete = JS(js),
    columnDefs = list(
      list(targets = 1, searchable = FALSE)
    )
  )
)
© www.soinside.com 2019 - 2024. All rights reserved.