2

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

4

2 回答 2

3

您可以创建一个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)

除此之外,如果他/她没有填写所有输入,您可以弹出一个窗口,并通过showModalserver会话中创建一个来要求他/她全部填写。

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!!!"))
       }
     }

希望这可以帮助!!!

于 2018-05-18T14:38:05.647 回答
2

如果您使用这些软件包shinyjs,您可以在并非所有输入都以这样的方式给出时停用该按钮。

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

请记住,您必须在您的用户界面中包含useShinyjs()某处。

希望这可以帮助!

于 2018-05-18T19:28:07.497 回答