2016-08-04 6 views
2

私のShinyアプリケーションでは、ui.Rの別のユーザー入力が定義されているかどうかによって、アクションボタンを表示するか非表示にするロジックを組み込もうとしています。私はuiOutput/renderUI機能を使って、アプリケーションの複雑さのためにこれを行うことはできません。Shinyのアクションボタンを非表示にするイベントを監視する

私のアプローチは、入力用のオブザーバーを作成し、それに応じてCSSタグを使用してアクションボタンを表示または非表示にすることです。私はCSSとその闘争を知らない。

これは私のアプリケーションのUIフォームです -

enter image description here

、私は、入力位置は、私が表示または非表示にする必要が空かないとこれに基づいているかどうかを返す反応性機能locationSpecifiedを持っています「実行」ボタン。ここで

私はui.rに「RUN」ボタンを追加してい方法です...

fluidRow(column(6, align="center", offset = 3, actionButton("action", "RUN"))) 

これは私がserver.Rにしよう(しかし、明らかに動作していない)のです何で...

observe({ 
    if(locationSpecified() == 1) 
     tags$head(tags$style(type="button/css", ".btn {display: inline-block}")) 
    if(locationSpecified() == 0) 
     tags$head(tags$style(type="button/css", ".btn {display: none}")) 
    }) 

私はこれまでの修正は、その複雑ではありません、あなたはどのようにこの仕事を得るために私を伝えることができる場合、私は感謝することを期待しています。

#UI 
conditonialPanel(condition='input.location!=null && input.location!=""', 
fluidRow(column(6, align="center", offset = 3, actionButton("action", "RUN")))) 

それともshinyjstoggleを使用することができます::事前に

おかげで、

アシシュ

+1

'shinyjs'パッケージには、何をしたいん' toggle'機能を持っています。 'conditionalPanel'も動作します。 – Carl

答えて

3

がそれを手に入れました最終的にshinyjsを使用して作業します。

#ui 
useShinyjs(), 
fluidRow(column(6, align="center", offset = 3, actionButton("action", "RUN")))) 

#server 
observe({ 
    shinyjs::hide("action") 

    if(locationSpecified()) 
    shinyjs::show("action") 
}) 

ありがとうございましたcarl私にshinyjsを指しています。

5

あなたはそうのようなconditionalPanelを使用することができ

#UI 
useShinyjs() # include useShinyjs() somewhere in UI 
#server 
observe({ toggle(id="action", condition=!is.null(input$location))}) 
+0

'観察({トグル(ID = "アクション"、状態= locationSpecified())})'ここで働いていません(理由はわかりません)。私はこのトグルが働くために多くの異なることを試みました。 – ashishkul

関連する問題