ASP.Net 多行文本框最大长度
Posted
技术标签:
【中文标题】ASP.Net 多行文本框最大长度【英文标题】:ASP.Net Multiline Textbox Maxlength 【发布时间】: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<textarea>
与asp:TextBox
相比有什么缺点吗?
所以你可以尝试第一个选项..从后面的代码中设置属性。还有一个选项是打开使用 jquery/javascript/正则表达式
【参考方案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 />
【讨论】:
这里不工作。以上是关于ASP.Net 多行文本框最大长度的主要内容,如果未能解决你的问题,请参考以下文章
MFC的Dialogbox多行文本框(CEdit)有最大字符限制,默认最大显示长度是?怎么实现显示160KB大小的文件
Asp.Net MVC 中 DataAnnotations StringLength 中文本框的 maxlength 属性