You need to enable JavaScript to run this app. 如何修改R Shiny selectizeInput的"Add..."文本并适配本地修改的selectize.js
优惠活动
大模型
产品
解决方案
定价
更多

如何修改R Shiny selectizeInput的"Add..."文本并适配本地修改的selectize.js

自定义“Add...”提示文本的快速实现

该提示不需要修改selectize.js源码,Shiny的selectizeInput的options参数会直接透传所有selectize.js支持的初始化配置,直接在options中添加createLabel参数即可:

  • 替换为自定义文本(例如法语提示):设置createLabel = "Ajouter"
  • 完全移除该提示:设置createLabel = ""

修改后的示例代码:

library(shiny)
ui <- fluidPage(
  selectizeInput(
    inputId = "ABCother",
    label = "Select or create",
    choices = c("A", "B", "C"),
    options = list(
      create = TRUE,
      createLabel = "输入后回车添加该项" # 替换为所需文本,或设为""移除提示
    )
  )
)

server <- function(input, output){}

shinyApp(ui, server)
自定义修改selectize.js后的全环境部署方案

如果需要批量修改selectize.js内部逻辑(例如批量适配多语言),可通过Shiny静态资源托管机制实现本地、Shiny.io平台的兼容,无需修改Shiny内置依赖:

  1. 在应用根目录下新建www文件夹,该目录为Shiny默认的静态资源服务目录,本地运行和Shiny.io部署都会自动识别
  2. 将修改完成的selectize.js文件放入该www文件夹内
  3. 在UI层先移除Shiny默认加载的selectize依赖,再引入自定义版本的js文件即可

完整示例代码:

library(shiny)
ui <- fluidPage(
  # 移除Shiny默认加载的selectize依赖
  suppressDependencies("selectize"),
  # 引入自定义的selectize.js文件
  tags$head(tags$script(src = "selectize.js")),
  selectizeInput(
    inputId = "ABCother",
    label = "Select or create",
    choices = c("A", "B", "C"),
    options = list(create = TRUE)
  )
)

server <- function(input, output){}

shinyApp(ui, server)

注意事项:

  • 自定义js的引入代码必须放在selectizeInput组件之前执行,避免加载顺序冲突
  • 所有自定义静态资源统一放在www目录下,无需额外配置路径,即可在本地和Shiny.io环境下正常访问

内容的提问来源于stack exchange,提问作者Geofc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 01:36:04