2016-02-08 33 views
7

Có thể chọn nhiều giá trị sử dụng chuỗi tự động hoàn chỉnh tương tự như tìm kiếm trên google và chọn thẻ ngăn xếp ngăn xếp trong hộp văn bản sáng bóng.Tự động hoàn thành và lựa chọn nhiều giá trị trong hộp văn bản sáng bóng

dataset<-cbind("John Doe","Ash","Ajay sharma","Ken Chong","Will Smith","Neo"....etc) 

Tôi muốn chọn nhiều biến từ các tập dữ liệu trên như một tự động điền vào textbox của tôi và vượt qua nó để server.R tôi

ui.R

shinyUI(fluidPage(
    titlePanel("test"), 

    sidebarLayout(
    sidebarPanel(
     helpText("text"), 

     textInput("txt","Enter the text",""), 
     #Pass the dataset here for auto complete 

    ), 

    mainPanel(
     tabsetPanel(type="tab",tabPanel("Summary"),textOutput("text2")) 

    ) 
) 
)) 

server.R

# server.R 

shinyServer(function(input, output) { 

output$text2<- renderText({ 
paste("hello",input$txt) 

}) 


} 
) 

CHỈNH SỬA

Tôi đã sử dụng select2input từ shinysky để chọn varialbes mulitiple nhưng bây giờ tôi đã thêm nút gửi để nhận các giá trị được chọn cùng nhau.

#ui.R 
select2Input("txt","This is a multiple select2Input",choices=c("a","b","c"),selected=c("")), 

actionButton("go","submit") 

Tôi muốn để ràng buộc tùy chọn chọn cho phép nói rằng người sử dụng lựa chọn a và c sau đó biến mới là

#server.R 
input$go #if pressed submit button 
var<-cbind("a","c") 
output$text<-renderText({ print ("var")}) 

nhưng điều này không làm việc

+3

Chỉnh sửa của bạn là câu hỏi cơ bản, bạn nên đọc lên 'sáng bóng' vì những việc này rất đơn giản. Tôi sẽ chỉnh sửa lại câu hỏi của mình, nhưng lần sau hãy đăng câu hỏi mới –

Trả lời

11

Nhìn vào shinysky gói và textInput.typeahead. Bạn có thể tùy chỉnh thêm kiểu của chính mình textinput. Edit: tôi thêm ví dụ với select2Input từ shinysky gói cũng để tham khảo

rm(list = ls()) 

library(shinysky) 
library(shiny) 

my_autocomplete_list <- c("John Doe","Ash","Ajay sharma","Ken Chong","Will Smith","Neo") 

ui <- shinyUI(
    fluidPage(tags$style(type="text/css",".shiny-output-error { visibility: hidden; }",".shiny-output-error:before { visibility: hidden; }"), 
      tags$style(type="text/css","#search { top: 50% !important;left: 50% !important;margin-top: -100px !important;margin-left: -250px 
         !important; color: blue;font-size: 20px;font-style: italic;}"),   

      mainPanel( 
       # one way of doing it 
       textInput.typeahead(id="search", 
            placeholder="Type your name please", 
            local=data.frame(name=c(my_autocomplete_list)), 
            valueKey = "name", 
            tokens=c(1:length(my_autocomplete_list)), 
            template = HTML("<p class='repo-language'>{{info}}</p> <p class='repo-name'>{{name}}</p>") 
      ), 
       br(),br(), 
       # using select2Input 
       select2Input("select2Input1","",choices=c(my_autocomplete_list),type = c("input", "select")) 
      ) 
) 
) 

server <- function(input, output, session) {} 
shinyApp(ui = ui, server = server) 

enter image description here

enter image description here

Chỉnh sửa 2 theo yêu cầu của. Vui lòng bao bọc các đối tượng của bạn theo các biểu thức reactive như tôi đã làm, ví dụ: var <- reactive({...}) để bạn có thể tái sử dụng những người sau này

rm(list = ls()) 

library(shinysky) 
library(shiny) 

my_autocomplete_list <- c("John Doe","Ash","Ajay sharma","Ken Chong","Will Smith","Neo") 

ui <- shinyUI(
    fluidPage(sidebarPanel(select2Input("txt","",choices=c("a","b","c"),selected=c("")), br(),actionButton("go","submit"), width =2), 
      mainPanel(textOutput('text')) 
) 
) 

server <- function(input, output, session) { 

    var <- reactive({ 
    if(input$go==0){return()} 
    isolate({ 
     input$go 
     cbind("a","c") 
    }) 
    }) 
    output$text <- renderText({var()}) 
} 
shinyApp(ui = ui, server = server) 
+1

hey cảm ơn vì đã trỏ tới shinysky .. Trong shinysky, hàm này 'select2Input()' phù hợp hơn cho mã của tôi .. Một lần nữa cảm ơn – Eka

+0

Tôi đã thêm các nghi ngờ bổ sung vào câu hỏi của tôi là bạn có thể giúp tôi – Eka

Các vấn đề liên quan