禁用选择输入闪亮

时间:2014-10-01 13:26:33

标签: javascript r shiny

我的闪亮应用程序有另一个问题。目标是在用户按下actionButton时禁用我的应用程序中的某些输入。我找到了this解决方案,它适用于textinputs和数字输入,但奇怪的是不适用于selectinput或selectizeinput。我知道解决方案包含某种方式使用javascript,但我不知道如何。

提前感谢您的帮助!

编辑:

也许我还没说清楚。对不起大家!我将添加必要的代码块。

这是链接的禁用功能。它适用于actionButtons和数字输入,但不适用于选择或选择输入。

 disableActionButton <- function(id,session) {
  session$sendCustomMessage(type="jsCode",
                            list(code= paste("$('#",id,"').prop('disabled',true)"
                                             ,sep="")))
    disableselectButton <- function(id,session) {
  session$sendCustomMessage(type="jsCode",
                            list(code= paste("$('#",id,"').prop('select',false)"
                                             ,sep="")))

    disableselectButton <- function(id,session) {
  session$sendCustomMessage(type="jsCode",
                            list(code= paste("$('#",id,"').prop('hide',false)"
                                             ,sep="")))

这是未被禁用的输入示例。正如我所说,解决方案可能是在javascript中,但我甚至不知道基本原理。我尝试过不同的问题,例如hide = true oder select = false,这不起作用(你可以看到上面没有工作的函数)。

selectInput("algorithmicMethod1",
                                label=h5("Berechnungsalgorithmus erster Wahl"),
                                c("RoT","Pickands"),
                                selected="RoT"),

                    conditionalPanel(condition="input.algorithmicMethod1 =='RoT'",

                                     selectInput("algorithmicMethod2",
                                                 label=h5("Berechnungsalgorithmus zweiter Wahl"),
                                                 "Pickands",
                                                 selected="Pickands")),

                    conditionalPanel(condition="input.algorithmicMethod1 =='Pickands'",

                                     selectInput("algorithmicMethod2",
                                                 label=h5("Berechnungsalgorithmus zweiter Wahl"),
                                                 "RoT",
                                                 selected="RoT"))

那么,有没有其他方法可以禁用select / selectize-Inputs?

再次感谢。:)

1 个答案:

答案 0 :(得分:4)

解决方案:您可以使用我的软件包shinyjs - 您只需致电shinyjs::disable(id)即可。

解释为什么它不是非常简单:问题是当你使用selectize时,它会创建另一个选择框,它只是非常漂亮的HTML,但它不是真正的HTML输入元素,所以它没有&# 39; t响应disabled属性,就像真正的HTML标签一样。如果你查看selectize.js文档,可以使用JS来禁用选择,但是闪亮不太方便。 :(

如果您不使用选择(selectInput(selectize = FALSE)),禁用将会正常工作。