Как отключить кнопку в зависимости от условия ввода?

#r #shiny #shinyjs

Вопрос:

Я пытаюсь создать условие на кнопке, чтобы оно работало только тогда, когда мой ввод не пустой И числовой . Мой код частично работает, так как кнопка запускается в отключенном режиме, включается при вводе ввода, но даже если ввод не числовой (т. Е. ввод букв позволит включить кнопку)

СТОРОНА ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА

 library(shinyjs)   ui lt;- tabItem(tabName = "principal1",  br(),    fluidRow(   column(2,  textInput(inputId = "documento1", "Ingrese el numero de documento", "")  ),    column(2,  br(),  fluidRow(  actionButton("consulta_gobutton1",   label = "Procesar",  icon = icon("clipboard-check") ) )))  

НА СТОРОНЕ СЕРВЕРА

 observeEvent(input$consulta_gobutton1, {  documento1 lt;- input$documento1   ###HERE IS MY CODE###   })   observe({  toggleState("consulta_gobutton1", input$documento1 != "" amp; is.numeric(as.numeric(input$documento1)) )    })  

Ответ №1:

Вы можете использовать numericInput и делать это

 library(shinyjs)  ui lt;- fluidPage(tabItem(tabName = "principal1",  br(),  useShinyjs(),  fluidRow(   column(2,  numericInput(inputId="doc1",label="Ingrese el numero de documento ",value="",min=0,max=15,step=0.1, width = "80px"),  #textInput(inputId = "documento1", "Ingrese el numero de documento", "")  ),    column(2,  br(),  fluidRow(  actionButton("consulta_gobutton1",   label = "Procesar",  icon = icon("clipboard-check") ) ))  ) ))  server lt;- function(input, output,session) {  observeEvent(input$consulta_gobutton1, {  documento1 lt;- input$documento1    ###HERE IS MY CODE###    })    observe({    if (is.numeric(input$doc1)) shinyjs::enable("consulta_gobutton1")  else shinyjs::disable("consulta_gobutton1")    #toggleState("consulta_gobutton1", input$documento1 != "" amp; is.numeric(as.numeric(input$documento1)) )    }) }  shinyApp(ui = ui, server = server)  

выход

Комментарии:

1. я не могу заставить это работать таким образом. кнопка останется отключенной даже при числовом вводе

2. Для меня это прекрасно работает. Я поставлю изображение. Кроме того, вы можете изменить максимальное значение выше 15 в любом допустимом диапазоне, который вам требуется. Возможно, вам нужно перезагрузить ноутбук или перезапустить RStudio.

3. Спасибо. у меня не было числового поля ввода, так что это влияло на состояние кнопки

Ответ №2:

поскольку входные данные представляют собой строку, сначала с ними нужно разобраться по-другому

 observe({  toggleState("consulta_gobutton1", input$documento1 != "" amp; !is.na(as.numeric(input$documento1)) )   #if(is.numeric(as.numeric(nn)) amp; !is.na(as.numeric(nn))   })