r-文本输入框的高度,可根据用户输入进行调整



有没有一种方法可以做到,如果用户到达textInput字段上的"行"的末尾,它会继续到下一行,并增加文本框的高度,这样他们就可以看到他们键入的全部内容?现在,文本继续在同一行,使得第一次键入的内容不再可见。增加文本框的高度也可以,因为如果他们到达文本框的末尾,就会出现一个滚动条,允许他们回到键入内容的顶部。

library('shiny')
ui<-fluidPage(
  fluidRow(
    textInput(inputId = "response1", label = "Type your Response Below")
  ))
server<-function(input,output,session)
{}
shinyApp(ui=ui, server=server)

实现这一点的另一种方法是使用textAreaInput而不是textInput,后者采用参数rows。根据textAreaInput文档,该参数取";输入"的可见字符行的值;。

因此,它可以这样使用:

library('shiny')
ui<-fluidPage(
  fluidRow(
    textAreaInput(inputId = "response1", label = "Type your Response Below", rows=4)
  ))
server<-function(input,output,session)
{}
shinyApp(ui=ui, server=server)

PS:textAreaInput有自己的更新值函数:updateTextAreaInput(只是为了防止您使用textInput的等效updateTextInput(

简单地说,我的主张是使用HTML标记textarea,然后赋予它闪亮小部件的css样式。

在下面的例子中,我首先创建了一个新的div,在其中我放置了带有id=response2和标签的HTML标记textarea。然后,我添加了来自的textInput的css样式,并使用标记headstyle将其应用于textarea标记。


完整示例:

library(shiny)
ui <- fluidPage(
    # Default style of normal textInput applied to the textarea (HTML tag)
    tags$head(
      tags$style("textarea {
                    width:300px; 
                    height:34px;
                    display: block;
                    padding: 6px 12px;
                    font-size: 14px;
                    line-height: 1.42857143;
                    color: #555;
                    background-color: #fff;
                    background-image: none;
                    border: 1px solid #ccc;
                    border-radius: 4px;
                    -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
                    box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
                  }
                  textarea:focus {
                    border-color: #66afe9;
                    outline: 0;
                    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
                    box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6)
                 }"
      )
    ),

    h3("Normal text input"),
    textInput(inputId = "response1", label = "Type your Response Below"),

    h3("Styled textarea"),
    withTags(
      div(
        h5(b("Type your Response Below")), 
        textarea(id = "response2")
      )
    ),

    br(),
    h3("Text from the styled textarea"),
    textOutput("out")
)
server<-function(input, output, session) {
  output$out <- renderText({
    input$response2
  })
}
shinyApp(ui = ui, server = server)

编辑:

用较少的代码量做同样事情的另一种方法是将闪亮输入form-control shiny-bound-input的css类添加到textarea标签,并使用style属性更改宽度和高度。

library(shiny)
ui <- fluidPage(
    h3("Normal text input"),
    textInput(inputId = "response1", label = "Type your Response Below"),
    h3("Styled textarea"),
    withTags(
      div(
        h5(b("Type your Response Below")), 
        textarea(id = "response2", 
                 class = "form-control shiny-bound-input",
                 style = "width: 300px; height: 34px")
      )
    ),
    br(),
    h3("Text from the styled textarea"),
    textOutput("out")
)
server<-function(input, output, session) {
  output$out <- renderText({
    input$response2
  })
}
shinyApp(ui = ui, server = server)

相关内容

  • 没有找到相关文章

最新更新