When using passwordInput
in a Shiny app, is there any way to allow the user to unmask their entry? If not, is there any alternative to passwordInput
that would?
You can use a custom Javascript function along with {shinyjs} to do this. Here is an example where the JS code toggles the "type" attribute of the input element from "password" to "text":
library(shiny)
library(shinyjs)
#>
#> Attaching package: 'shinyjs'
#> The following object is masked from 'package:shiny':
#>
#> runExample
#> The following objects are masked from 'package:methods':
#>
#> removeClass, show
# Create JS function
jsCode <- r"(
shinyjs.togglePass = function(){
const type = document.querySelector("#password").getAttribute("type") === "password" ? "text" : "password";
document.querySelector("#password").setAttribute("type", type);}
)"
ui <- fluidPage(
useShinyjs(), # Include shinyjs
extendShinyjs(text = jsCode, functions = c("togglePass")), # Allow usage of JS function
checkboxInput("toggle", "Show Password"),
passwordInput("password", "Password")
)
server <- function(input, output) {
observe({
js$togglePass(input$toggle)
}) %>%
bindEvent(input$toggle, ignoreInit = TRUE)
}
shinyApp(ui, server)
Shiny applications not supported in static R Markdown documents
Created on 2024-01-04 with reprex v2.0.2
Thanks! This is very helpful. One minor note for anyone else using this: unless you have magrittr (or a library that loads magrittr) loaded, you'll want to change %>%
to |>
.
1 Like
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
If you have a query related to it or one of the replies, start a new topic and refer back with a link.