Ответ 1
Причина, по которой код, на который вы ссылаетесь в своем вопросе, не работает для других виджетов ввода, заключается в том, что для разных входных виджетам нужны разные вызовы JavaScript, чтобы отключиться. Еще одна проблема заключается в том, что когда блестящий создает элемент ввода, иногда идентификатор, который вы указываете, является идентификатором фактического тега ввода HTML, а иногда этот идентификатор присваивается контейнеру входного тега.
В пакете shinyjs есть функция disable
которая будет работать как есть с любым блестящим вводом. Отказ от ответственности: я написал этот пакет.
Вот как вы могли бы отключить numericInput
как вы просили
library(shiny)
runApp(shinyApp(
ui = fluidPage(
shinyjs::useShinyjs(),
numericInput("test", "Test", 5),
actionButton("submit", "Choose")
),
server = function(input, output, session) {
observeEvent(input$submit, {
shinyjs::disable("test")
})
}
))