我一直在寻找一种方法来限制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
)验证程序并验证控件BUT
大部分答案都是2013年prevois,maxlength
对所有浏览器的支持是从2013年开始的,因为IE10已经发布(reference)。
目前,每个浏览器都支持此属性 - 您可以自行测试:https://jsfiddle.net/wuu5wne1/
问题
如何强制ASP.Net将此属性应用于我的多行文本框?
答案 0 :(得分:2)
我的解决办法就是在document.ready:
中通过jquery手动设置maxlength属性$(document).ready(function ()
{
$('#<%=tbTest.ClientID%>').prop('maxlength', 20);
}
是的,它有点hacky,但是如果你想使用asp控件(我不想要部署代码更改),它就可以工作。
答案 1 :(得分:1)
您可以在aspx文件中使用以下代码,
<textarea runat="server" id="tbTest"
maxlength="20" rows="5" cols="30" >
</textarea>
&#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 />