【问题标题】:ASP.Net Multiline Textbox MaxlengthASP.Net 多行文本框最大长度
【发布时间】:2017-07-05 03:15:01
【问题描述】:

我一直在寻找一种方法来限制 TextBox 中的文本,看起来像这样

<asp:TextBox runat="server" ID="tbTest" TextMode="MultiLine"  
             MaxLength="20" Rows="5" Columns="30" >
</asp:TextBox>

属性MaxLength="20"仅在另一个属性TextMode="MultiLine"设置时有效。它甚至没有被渲染。

HTML 中的输出如下所示:

<textarea name="ctl00$ContentPlaceHolder1$tbTest" 
          id="ctl00_ContentPlaceHolder1_tbTest" rows="5" cols="30">
</textarea>

如果您在 SO 上搜索解决此问题的解决方案,您会得到 2 种建议方法:

  • 添加一个 (asp:RegularExpression) 验证器并验证控件
  • 添加一个 JavaScript,在达到限制时删除最后一个插入字符。

但是

大多数答案是 2013 年之前的,maxlength 在所有浏览器上的支持是从 2013 年 IE10 发布 (reference) 开始的。

目前每个浏览器都支持此属性 - 请自行测试:https://jsfiddle.net/wuu5wne1/

问题

如何强制 ASP.Net 将此属性应用于我的多行文本框?

【问题讨论】:

  • 我认为当前的浏览器没有太大变化。您仍然需要使用 JS 或正则表达式。
  • 我认为如果你从代码后面添加 MaxLength 属性它将起作用,或者使用 html
  • @ManishGoswami &lt;textarea&gt;asp:TextBox 相比有什么缺点吗?
  • 所以你可以尝试第一个选项..从后面的代码中设置属性。还有一个选项是打开使用 jquery/javascript/正则表达式

标签: c# html asp.net webforms textbox


【解决方案1】:

欢迎来到 2020 - 这个终于可以在所有浏览器上运行

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        tbTest.Attributes.Add("maxlength", "20");
    }
}

【讨论】:

    【解决方案2】:

    我对此的解决方案是在 document.ready 中通过 jquery 手动设置 maxlength 属性:

    $(document).ready(function ()
    {
        $('#<%=tbTest.ClientID%>').prop('maxlength', 20);
    }
    

    是的,它有点 hacky,但是如果你想使用 asp 控件(我不想部署代码更改),它可以工作。

    【讨论】:

      【解决方案3】:

      在 Visual Studio 2019 中,如果您添加 columns 属性,maxLength 将起作用

      <asp:TextBox runat="server" Columns="1" MaxLength="50" class="form-control"  ID="txtFirstName" ClientIDMode="Static" required />
      

      【讨论】:

      • 这里不工作。
      猜你喜欢
      • 2010-11-22
      • 2012-04-05
      • 2011-04-27
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多