我正在尝试将actionBttn
和sendSweetAlert
一起用于一个闪亮的项目。此外,我希望通知用户是否存在无效输入(例如,空白文本输入)。
为此,我尝试在validate
中使用observeEvent
,该方法可以防止发出警报,但不提供诸如“请提供文字”之类的替代消息。
这是一个简单的例子:
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
useSweetAlert(),
sidebarPanel(
textInput("text", "Require This Text"),
actionBttn(
inputId = "submit",
label = "Submit Form",
color = "success",
style = "float",
block = TRUE)
)
)
server <- function(input, output, session) {
observeEvent(input$submit,
{
validate(
need(input$text, message = "Please provide a text")
)
sendSweetAlert(
session = session,
title = "Plz halp",
text = "Cool stuff doing neat things",
type = "success",
btn_labels = c("Great")
)}
)
}
# Run the application
shinyApp(ui = ui, server = server)
请注意,如果没有文本输入,SweetAlert函数将不起作用(这是一件好事),但是没有其他消息。
有没有一种干净的方法可以做到这一点?我考虑过一个if语句,如果任何值都为NULL,则显示SweetAlert错误,但是我不太想怎么做。
答案 0 :(得分:1)
您可以使用#New Event, prints oh wow if someone says wow
@client.event
async def on_message(message):
if "wow" in message.content:
await channel.send("oh wow")
#End of Event
来检查输入是否填写:
isTruthy
编辑:根据您的注释,您的代码将执行以下操作以避免重复操作。在全球或其他地方,.ake一个可以验证列表的函数
observeEvent(input$submit,
if(isTruthy(input$text)) {
sendSweetAlert(
session = session,
title = "Plz halp",
text = "Cool stuff doing neat things",
type = "success",
btn_labels = c("Great")
)
} else {
sendSweetAlert(
session = session,
title = "Plz halp",
text = "Please Provide Text",
type = "error",
btn_labels = c("Sorry!")
)
})
然后在您的服务器中,使表单数据成为反应式列表:
allTruthy <- function(l) {
all(vapply(l, isTruthy, logical(1)))
}
现在,您的表单数据在一个不错的列表中,可供使用和验证。然后您的观察者可以是:
t1Form <- reactive(list(
pop_interest = input$t1_pop_interest,
int_interest = input$t1_int_interest,
comparator = input$t1_comparator,
poutcome = input$t1_poutcome,
setting = input$t1_setting
))