#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)) })