将字符串添加到列表中并删除 SearchInput / textinput 的搜索栏中的文本
Add string into a list and remove the text in the search bar of a SearchInput / textinput
假设我的应用程序上有来自 shinyWidgets 的 searchInput 或来自 Shiny 的常规文本输入。
我希望用户能够写一些东西,按 enter - 代码将其添加到列表中。
这样 search_1 ENTER, search_2 ENTER , search_3 ENTER
搜索输入 UI 将在每次输入时重置。
输出需要为“search_1、search_2、search_3”
我现在有解决方法,searchInput 用“,”拆分输入文本,因此用户需要自己键入“search_1、search_2、search_3”,这是不适合使用。
希望能做到吗?提前致谢!
您可以创建一个反应值 search_text
存储所有输入:
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
searchInput("search"),
textOutput("text")
)
server <- function(input, output, session) {
# store all entered search terms
search_text <- reactiveVal(value = "")
observeEvent(
eventExpr = input$search,
handlerExpr = {
# add current search term
search_text() %>%
paste0(input$search, ", ") %>%
search_text()
# reset input text
updateSearchInput(session, "search", value = "")
}
)
output$text <- renderText(search_text())
}
shinyApp(ui, server)
假设我的应用程序上有来自 shinyWidgets 的 searchInput 或来自 Shiny 的常规文本输入。
我希望用户能够写一些东西,按 enter - 代码将其添加到列表中。 这样 search_1 ENTER, search_2 ENTER , search_3 ENTER
搜索输入 UI 将在每次输入时重置。
输出需要为“search_1、search_2、search_3”
我现在有解决方法,searchInput 用“,”拆分输入文本,因此用户需要自己键入“search_1、search_2、search_3”,这是不适合使用。
希望能做到吗?提前致谢!
您可以创建一个反应值 search_text
存储所有输入:
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
searchInput("search"),
textOutput("text")
)
server <- function(input, output, session) {
# store all entered search terms
search_text <- reactiveVal(value = "")
observeEvent(
eventExpr = input$search,
handlerExpr = {
# add current search term
search_text() %>%
paste0(input$search, ", ") %>%
search_text()
# reset input text
updateSearchInput(session, "search", value = "")
}
)
output$text <- renderText(search_text())
}
shinyApp(ui, server)