ASP.Net多行文本框Maxlength

时间:2017-02-16 06:40:04

标签: c# html asp.net webforms textbox

我一直在寻找一种方法来限制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>

如果你在这里搜索解决这个问题的解决方案,你会得到两种方法:

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

BUT

大部分答案都是2013年prevois,maxlength对所有浏览器的支持是从2013年开始的,因为IE10已经发布(reference)。

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

问题

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

4 个答案:

答案 0 :(得分:2)

我的解决办法就是在document.ready:

中通过jquery手动设置maxlength属性
$(document).ready(function ()
{
    $('#<%=tbTest.ClientID%>').prop('maxlength', 20);
}

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

答案 1 :(得分:1)

您可以在aspx文件中使用以下代码,

&#13;
&#13;
<textarea runat="server" id="tbTest"
             maxlength="20"  rows="5" cols="30" >
</textarea>
&#13;
&#13;
&#13;

希望它有所帮助!

答案 2 :(得分:1)

这个可以工作,但它看起来很迂回 - 特别是如果这个TextBox以某种方式嵌套到数据控件中。 foo.FindControll("bar")...

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

答案 3 :(得分:0)

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

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