0

我需要创建一个TextInput(闪亮),里面有一个图标(如占位符),没有css和javascript。

我已经使用 textInputIcon 函数完成了这项工作,如下所示:

shinyWidgets::textInputIcon(inputId = ns("txt_username"),
                            label = "",
                            placeholder = "Usuário",
                            icon = shiny::icon("user")
                            )

但是,我在文档中没有找到任何方法可以对输入为密码的文本使用相同的组件,因为有必要显示输入的字符 hidden

passwordInput 功能(来自闪亮)自动隐藏字符,但我不能在它旁边放一个图标。

shiny::passwordInput(inputId = ns("txt_password"),
                             placeholder = "Senha",
                             label = "",
                             ),

有谁知道只有隐藏字符才能让我得到相同的结果?

4

1 回答 1

0

一种可能的解决方法是结合两个函数 html 并在 ui 中使用它:

library(shiny)
#library(shinyWidgets)

passwordInput_custom <-
    '<div class="form-group shiny-input-container">
        <label class="control-label" id="txt_password-label" for="txt_password"></label>
        <div class="input-group">
        <span class="input-group-addon">
          <i class="fa fa-user" role="presentation" aria-label="user icon"></i>
        </span>
      <input id="txt_password" type="password" class="form-control" value="" placeholder="Senha"/>
    </div>'

ui <- fluidPage(

  tagList(HTML(passwordInput_custom)),
  textOutput('psswd')
  #if icon is not called anywhere inside the ui, the icon won't display
, tags$style(icon("user") #to put it somewhere that it won't show. ) )

server <- function(input, output, session) {
  
  output$psswd <- renderText({
    input$txt_password
  })
  
}

shinyApp(ui, server)

不是最干净的解决方案,但它有效。

于 2021-07-01T04:02:54.887 回答