2016-09-20 17 views
1

radioButton()の入力は、ラベルのリセット機能を持つHTMLで取得することを目指しています。HTMLとshinyjs :: reset()のradioButton()の選択

radioButtons()はラベルにHTMLを許可していないため、以下から始まりました。

library(shiny) 
library(shinyjs) 

ui <- shinyUI(bootstrapPage(

    useShinyjs(), 
    tags$div(id = "form", 
    tags$div(HTML(' 
       <div id="rating" class="form-group shiny-input-radiogroup shiny-input-container"> 
       <label class="control-label" for="rating">Your Rating:</label> 
       <div class="shiny-options-group"> 
       <div class="radio"> 
       <label> 
       <input type="radio" name="one" value="1"/> 
       <span><i class="fa fa-star" aria-hidden="true"></i></span> 
       </label> 
       </div> 
       <div class="radio"> 
       <label> 
       <input type="radio" name="two" value="2"/> 
       <span><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i></span> 
       </label> 
       </div> 
       </div> 
       </div>'))), 

    actionButton("feedback_btn", "send feedback", icon = icon("send", lib = "font-awesome")), 
    htmlOutput("Ratingout") 
)) 

    server <- shinyServer(function(input, output, session) { 
    output$Ratingout <- renderText({ 
     paste("The Rating was ", input$rating) 
    }) 

    observeEvent(input$feedback_btn, { 
     reset("rating") 

    }) 
    }) 

    shinyApp(ui, server) 

が、私は2つの問題に走った:私は私が正しい方法でshinyjs::reset()を使用していないようだinput$Ratingout値と

  • にアクセスすることはできません

    • 。ボタンを押した後に、がなく、が選択されています。
  • 答えて

    2

    bind入力を光沢にしてサーバー側で使用する必要があります。簡単に私の心に

    光沢のあるradioButtons

    を上書きしかし、あなたが見ることができるヘルプのために:

    あなたが「なし選択されていない」状態を表すために必要がある場合は、それがラジオボタンをデフォルト することが可能です selected = character(0)を使用して選択されたオプションがありません。しかし、これは推奨されていません。 を選択したユーザーは、その状態に戻ることができません。 代わりに、最初の選択肢をcにすることを検討してください( "None selected" = "")。

    デフォルト値として0(resetcharacter(0)では動作しません)

    library(shiny) 
    library(shinyjs) 
    
    edit_button=function(rb){ 
    
        for(i in 1:length(rb$children[[2]]$children[[1]])){ 
        value=as.numeric(rb$children[[2]]$children[[1]][[i]]$children[[1]]$children[[1]]$attribs$value) 
        if(!is.na(value)&value>0){ 
        rb$children[[2]]$children[[1]][[i]]$children[[1]]$children[[2]]$children[[1]]=HTML(paste(rep('<i class="fa fa-star" aria-hidden="true"></i>',value),sep = "",collapse = "")) 
        } 
        } 
        rb 
    
    } 
    
    
    
    
    ui <- shinyUI(bootstrapPage(
        edit_button(radioButtons("rate_","Rate",choices = list("None selected"=0,'one'=1,"two"=2))), 
        useShinyjs(), 
        actionButton("feedback_btn", "send feedback", icon = icon("send", lib = "font-awesome")), 
        htmlOutput("Ratingout") 
          )) 
    
    server <- shinyServer(function(input, output, session) { 
        output$Ratingout <- renderText({ 
        paste("The Rating was ", input$rate_) 
        }) 
    
        observeEvent(input$feedback_btn, { 
        reset("rate_") 
        }) 
    }) 
    
    shinyApp(ui, server) 
    
    +0

    にOKを使用するので、beter - これは私のためにすでに利用可能です!私のユースケースでは、より良い解決策は、ボタンが強調表示されていない初期状態とリセット状態(推奨されていない)バージョンです。しかし私のjs知識はゼロに近いです... – sammerk

    関連する問題