闪亮:如何根据按键/键隐藏和显示元素。输入

时间:2020-07-06 11:54:01

标签: r shiny

我正在尝试构建一个闪亮的应用程序,该应用程序在按下特定键以模拟隐式关联测试时可以隐藏/显示“页面”。刚开始的参与者会受到指示,然后(从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)

1 个答案:

答案 0 :(得分:0)

尝试一下,我添加了键(eiSHIFT+eSHIFT+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)
相关问题