我正在尝试构建一个闪亮的应用程序,该应用程序在按下特定键以模拟隐式关联测试时可以隐藏/显示“页面”。刚开始的参与者会受到指示,然后(从IAT1开始)必须在出现特定单词时按“ e”或“ i”,然后应显示下一个单词。这意味着当按下“ e”或“ i”时,第一个单词应消失而新单词出现。在IAT 1(单词1)之后,我到现在还没走很远,不会显示第二个单词,而是再次显示欢迎页面以测试按键输入。
我也尝试了e.keyCode
而不是e.which
,但是按键输入似乎没有改变任何东西或让元素出现/消失,而且我不知道自己在做什么错或问题可能出在哪里是。
ui <- fluidPage(
useShinyjs(),
div(
id = "welcome",
mainPanel(
fluidRow(
h3("Welcome"),
p("Welcome to the test."),
br(),
actionButton("continue1", label = "weiter")
)
)
),
hidden(
div(
id = "instruction",
mainPanel(
fluidRow(
h3("Instruction"),
p("Please ...")),
br(),
actionButton("continue2", label = "weiter"))
)
),
hidden(
div(
id = "IAT1",
mainPanel(
fluidRow(
h3("IAT"),
p("IAT word 1")),
br(),
tags$script('$(document).on("keypress", function(e) {
shiny.onInputChange("keyid1", e.keyCode);
});'))
))
)
#####server#
useShinyjs()
server <- function(input, output) {
observeEvent(input$continue1, {
show("instruction")
hide("welcome")
})
observeEvent(input$continue2, {
show("IAT1")
hide("instruction")
})
observeEvent(input$keyid1,{
if(e.keyCode == 69) {
hide("IAT1")
show("welcome")
}
else {}
})
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:0)
尝试一下,我添加了键(e
,i
,SHIFT+e
,SHIFT+i
)
library(shiny)
library(ggplot2)
ui <- fluidPage(
useShinyjs(),
div(
id = "welcome",
mainPanel(
fluidRow(
h3("Welcome"),
p("Welcome to the test."),
br(),
actionButton("continue1", label = "weiter")
)
)
),
hidden(
div(
id = "instruction",
mainPanel(
fluidRow(
h3("Instruction"),
p("Please ...")),
br(),
actionButton("continue2", label = "weiter"))
)
),
hidden(
div(
id = "IAT1",
mainPanel(
fluidRow(
h3("IAT"),
p("IAT word 1")),
br(),
tags$script('$(document).on("keypress", function(e) {
Shiny.onInputChange("keyid1", e.keyCode);
});'))
))
)
server <- function(input, output,session) {
observeEvent(input$continue1, {
show("instruction")
hide("welcome")
})
observeEvent(input$continue2, {
show("IAT1")
hide("instruction")
})
observeEvent(input$keyid1,{
print(input$keyid1)
if(input$keyid1 %in% c(101,105,69,73)) {
hide("IAT1")
show("welcome")
}
else {}
})
}
shinyApp(ui = ui, server = server)