如何使actionButton仅在R闪亮中给出所有输入时起作用?

时间:2018-05-18 09:09:33

标签: r web-applications shiny user-input action-button

目前我的actionButton通过下拉列表接收用户输入,然后在按下actionButton时将其输出到csv文件。 但是,如果用户只输入5个下拉列表中的2个并按下actionButton,则仍会转到csv文件。我怎样才能使它只接受actionButton如果给出所有输入?我正在使用observeEvent()。

2 个答案:

答案 0 :(得分:2)

如果你使用包shinyjs,你可以在没有给出所有输入时停用按钮。

observe(
    {
     if(input$one!=""&&input$two!=""&&!is.na(input$three))
       {
        enable("SubmitButton")
       }
     else
       {
         disable("SubmitButton")
       }
     })

请记住,你必须在你的ui中包含useShinyjs()

希望这有帮助!

答案 1 :(得分:1)

您可以创建名为Submit的ActionButton,在单击该按钮后可以执行代码,但在代码提供if条件之前,检查是否有任何输入。

ui使用:

actionButton(inputId = "SubmitButton",label = "Submit")

server您可以使用:

 ObserveEvent(input$SubmitButton,
{
 if(input$one!=""&&input$two!=""&&!is.na(input$three))
   {
    ###You't code involving the multiple inputs
   }
 }

现在代码只有在按下提交按钮且输入不为空或NULL时才会有效。我建议您在服务器部分之前将输入初始化为"",以便这样做可以在选择input$name!=""!is.na(input$name)时小心。

除此之外,如果他/她没有填写所有输入并要求他/她通过在showModal会话中创建server来填写所有内容,则可以弹出一个。 / p>

ObserveEvent(input$SubmitButton,
    {
     if(input$one!=""&&input$two!=""&&!is.na(input$three))
       {
        ###You't code involving the multiple inputs
       }
     else
       {
         showModal(modalDialog(title ="Warning!!!", "Please fill all the fields before you click the Submit buttion!!!"))
       }
     }

希望这有帮助!!!