我正在 R Shiny 中创建一个应用程序,用户可以从多个会话中进行选择,并根据该输入,条件面板显示相关数量的 fileInput 小部件,以便用户可以上传他们的文件。
只要 fileInput 的数量不超过页面的长度(在我的例子中为 5),这就可以正常工作。但是,如果用户必须向下滚动页面才能到达“浏览...”按钮,然后单击该按钮,则会导致浏览器返回到页面顶部。
代码仍然有效,文件仍然上传,但是如果有 15 - 20 个文件要上传,并且用户每次都必须向下滚动,这会变得令人恼火和混乱。
Tl;dr在 FileInput 小部件上点击“浏览...”会导致浏览器返回到 Shiny 应用程序的顶部。
下面是非常简单的工作示例,没有任何服务器代码:
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput(
inputId = "numSessions",
label = "Number of Sessions",
choices = c("1 Session" = 1, "2 Sessions" = 2,
"3 Sessions" = 3, "10 Sessions"= 10)
),
conditionalPanel(
condition = "input.numSessions == 1",
fileInput(inputId = "s1", label = "s1 upload")
),
conditionalPanel(
condition = "input.numSessions == 2",
fileInput(inputId = "s1", label = "s1 upload"),
fileInput(inputId = "s2", label = "s2 upload")
),
conditionalPanel(
condition = "input.numSessions == 3",
fileInput(inputId = "s1", label = "s1 upload"),
fileInput(inputId = "s2", label = "s2 upload"),
fileInput(inputId = "s3", label = "s3 upload"),
),
conditionalPanel(
condition = "input.numSessions == 10",
fileInput(inputId = "s1", label = "s1 upload"),
fileInput(inputId = "s2", label = "s2 upload"),
fileInput(inputId = "s3", label = "s3 upload"),
fileInput(inputId = "s4", label = "s4 upload"),
fileInput(inputId = "s5", label = "s5 upload"),
fileInput(inputId = "s6", label = "s6 upload"),
fileInput(inputId = "s7", label = "s7 upload"),
fileInput(inputId = "s8", label = "s8 upload"),
fileInput(inputId = "s9", label = "s9 upload"),
fileInput(inputId = "s10", label = "s10 upload")
)
),
mainPanel (
)
)
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |