目前我的actionButton通过下拉列表接收用户输入,然后在按下actionButton时将其输出到csv文件。 但是,如果用户只输入5个下拉列表中的2个并按下actionButton,则仍会转到csv文件。我怎样才能使它只接受actionButton如果给出所有输入?我正在使用observeEvent()。
答案 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!!!"))
}
}
希望这有帮助!!!