R 如果数字输入不满足条件,则显示即时通知
我有一个textInput,用户应该在其中输入一个数字,我检查它是否大于0。我使用textInput而不是numInput的原因是我不喜欢后者附带的箭头。该数字用于进一步计算。我的目标是在输入数小于或等于0时向用户显示即时通知。我所说的即时是指一旦用户在输入字段外单击。我尝试了以下操作,但无论输入是什么,都不会显示任何通知:R 如果数字输入不满足条件,则显示即时通知,r,shiny,R,Shiny,我有一个textInput,用户应该在其中输入一个数字,我检查它是否大于0。我使用textInput而不是numInput的原因是我不喜欢后者附带的箭头。该数字用于进一步计算。我的目标是在输入数小于或等于0时向用户显示即时通知。我所说的即时是指一旦用户在输入字段外单击。我尝试了以下操作,但无论输入是什么,都不会显示任何通知: library(shiny) ui <- fluidPage(textInput("num_ipt", "enter positive number")) ser
library(shiny)
ui <- fluidPage(textInput("num_ipt", "enter positive number"))
server <- function(input, output, session) {
pos_num <- reactive({
validate(need(as.numeric(input$num_ipt) > 0), "Enter positive number")
as.numeric(input$num_ipt)})}
shinyApp(ui, server)
这不起作用,因为消息必须是need参数,而在代码中它是validate参数
library(shiny)
ui <- fluidPage(textInput("num_ipt", "enter positive number"),
verbatimTextOutput("numb"))
server <- function(input, output, session) {
pos_num <- reactive({
validate(need(as.numeric(input$num_ipt) > 0, "Enter positive number"))
as.numeric(input$num_ipt)
})
output$numb <- renderText(pos_num())
}
shinyApp(ui, server)
如果您不介意添加其他依赖项,请尝试在UI中添加逐字逐句的ExtoutPutNumb,然后在服务器代码中的被动添加'output$numb'之后添加,这是显示此类通知的简便方法。页面末尾的示例应该足以让您开始。此外,shinyFeedback软件包也很好地显示了此类消息。@Joe我已经看到了您提到我的第二次编辑。如果在删除输出$numb时这不起作用,那可能是因为无功导体pos_num没有后代,那么它永远不会执行。在哪里可以找到shinyFeedback?我尝试了CRAN和devtools::install_githubshinyFeedback,但都没有成功。@Joe它在CRAN上:
library(shiny)
ui <- fluidPage(textInput("num_ipt", "enter positive number"))
server <- function(input, output, session) {
pos_num <- reactive({
validate(need(as.numeric(input$num_ipt) > 0, "Enter positive number"))
as.numeric(input$num_ipt)})}
shinyApp(ui, server)
library(shiny)
ui <- fluidPage(textInput("num_ipt", "enter positive number"),
verbatimTextOutput("numb"))
server <- function(input, output, session) {
pos_num <- reactive({
validate(need(as.numeric(input$num_ipt) > 0, "Enter positive number"))
as.numeric(input$num_ipt)
})
output$numb <- renderText(pos_num())
}
shinyApp(ui, server)
library(shiny)
library(shinyFeedback)
ui <- fluidPage(
useShinyFeedback(),
textInput("num_ipt", "enter positive number", value="1"),
verbatimTextOutput("numb")
)
server <- function(input, output, session) {
observeEvent(input$num_ipt, {
feedbackWarning(
inputId = "num_ipt",
condition = is.na(as.numeric(input$num_ipt)) || !(as.numeric(input$num_ipt) > 0),
text = "Enter a positive number !"
)
})
pos_num <- reactive({
validate(need(as.numeric(input$num_ipt) > 0, message=FALSE))
as.numeric(input$num_ipt)
})
output$numb <- renderText(pos_num())
}
shinyApp(ui, server)