You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取shinysky包中textInput.typeahead()的输入值

解决Shinysky自动补全无法获取选中值的问题

我之前也踩过shinysky这个自动补全的坑!你遇到的情况核心问题是没找对它的输入值获取方式——shinysky的autocomplete组件和Shiny原生的textInput逻辑不一样,它的选中值不是存在你设置的id对应的input$xxx里,而是在input$xxx_value这个特殊对象里。

完整可运行代码示例

下面是修正后的完整代码,你可以直接测试:

ui.R

library(shiny)
library(shinysky)

ui <- fluidPage(
  titlePanel("Shinysky Autocomplete 测试"),
  # 定义自动补全输入框
  autocompleteInput(
    id = "my_autocomplete",
    placeholder = "开始输入...",
    update_on = "input", # 输入时实时更新补全建议
    auto_complete_list = my_autocomplete_list
  ),
  # 用于展示选中值的输出框
  verbatimTextOutput("selected_value")
)

server.R

library(shiny)
library(shinysky)

my_autocomplete_list <- c("aaaa","bbbb","ccccc", "dddd","eeee")

server <- function(input, output, session) {
  # 关键:监听input$my_autocomplete_value,而不是input$my_autocomplete
  output$selected_value <- renderPrint({
    # 用req()确保值存在时再渲染
    req(input$my_autocomplete_value)
    paste("你选中了:", input$my_autocomplete_value)
  })
}

shinyApp(ui, server)

关键知识点解释

  • shinysky的autocompleteInput会生成两个关联的输入对象:
    • input$<你的id>:用户正在输入的实时文本(即使没选下拉建议也会有值)
    • input$<你的id>_value:用户从下拉补全列表中选中的最终值(只有选了建议才会有值)
  • 如果你需要获取用户选中的补全项,必须监听带_value后缀的那个输入对象。

额外排查点

如果还是不行,可以试试这两个操作:

  • 检查shinysky包版本,旧版本可能存在值传递bug,建议更新到最新版
  • 确认auto_complete_list的格式正确,是字符向量,没有空值或特殊字符干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:43:01