ASP.Net 多行文本框最大长度

Tos*_*shi 7 html c# asp.net textbox webforms

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

<asp:TextBox runat="server" ID="tbTest" TextMode="MultiLine"  
             MaxLength="20" Rows="5" Columns="30" >
</asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

该物业 MaxLength="20"如果其他财产只能TextMode="MultiLine"设置。它甚至没有被渲染。

HTML 中的输出如下所示:

<textarea name="ctl00$ContentPlaceHolder1$tbTest" 
          id="ctl00_ContentPlaceHolder1_tbTest" rows="5" cols="30">
</textarea>
Run Code Online (Sandbox Code Playgroud)

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

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

大多数答案是 2013 年以前的maxlength,所有浏览器的支持都是从 2013 年 IE10 发布开始的(参考)。

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

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

Tos*_*shi 7

欢迎来到 2020 年 - 现在终于可以在所有浏览器上使用了

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


小智 5

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

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

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