Asp.net 如何限制文本框中允许的字符数?
这是我的文本框。如何限制用户可以在其中键入的字符数?MaxLength=“Int32”Asp.net 如何限制文本框中允许的字符数?,asp.net,Asp.net,这是我的文本框。如何限制用户可以在其中键入的字符数?MaxLength=“Int32” 将MaxLength属性设置为字符数。您正在查找MaxLength:Look是否尝试在文本框上设置MaxLength属性?因为这件事对我来说很重要。我没有保留多行属性 <asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="220" TextMode="Mu
将MaxLength属性设置为字符数。您正在查找MaxLength:Look是否尝试在文本框上设置MaxLength属性?因为这件事对我来说很重要。我没有保留多行属性
<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="220"
TextMode="MultiLine" Width="100%"></asp:TextBox>
AFAIK maxlength从未与“多行”模式配合使用。因此,我建议使用一些客户端js/jquery和服务器端来解决这个问题。为您的文本框添加FliterTextBoxExtender类型的扩展器应该是这样的
<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="2" Width="100%"></asp:TextBox>
MaxLength
不适用于ASP.NET中带有TextMode=“MultiLine”
的文本框。要做到这一点并保持多行标记,一个简单的方法是添加:
<asp:TextBox ID="TxtCellular" runat="server"></asp:TextBox>
<asp:FilteredTextBoxExtender ID="TxtCellular_FilteredTextBoxExtender"
runat="server" Enabled="True" TargetControlID="TxtCellular" FilterType="Numbers">
</asp:FilteredTextBoxExtender>
编辑选项二(客户端):这里是一个简单的jquery解决方案。在头脑中包含以下脚本,而不是附加onkeypress
或编辑服务器端代码
protected void Page_Load(object sender, EventArgs e)
{
txtBodySMS.Attributes.Add("maxlength", "10");
}
请记住,在任何一种情况下,都可以删除客户端验证。如果您将其存储在数据库中,则应始终在服务器端进行验证。最大字符长度验证(允许最多8个字符)
最小字符长度验证(至少需要8个字符)
最小和最大字符长度验证(至少需要5个字符,最多需要8个字符)
需要注意的是,单独使用
MaxLength
(与其他答案一样,不添加其他属性)仅适用于.NET Framework 4.5及以上版本的项目
我使用的是4.5,它对我的项目起到了作用
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox3" ID="RegularExpressionValidator3" ValidationExpression = "^[\s\S]{5,8}$" runat="server" ErrorMessage="Minimum 5 and Maximum 8 characters required."></asp:RegularExpressionValidator>
只需在.cs页面加载中的两行下方键入
<asp:TextBox ID="txtSample" MaxLength="3" runat="server"/>
希望这会有帮助 在ASP.NET的设计中,您可以设置textbox的MaxLength属性,这似乎是一个奇怪的疏忽(不考虑textareas的异常情况),但如果不显式添加验证程序,似乎无法在服务器端强制执行此限制。如果您有很多字段,只是想确保没有人通过注入自己的POST数据来补贴表单的限制,那么这将是一个麻烦。所以我写了这篇文章,它似乎起到了作用——很明显,你可能不想强迫别人回答。结束
textbox1.Attributes.Remove("MaxLength");
textbox1.Attributes.Add("MaxLength", "30");
Protected Sub Page\u Load(发送方作为对象,e作为System.EventArgs)处理Me.Load
Dim colControls As Collection=新集合
getControlList(colControls,Me)
对于colControls中的每个ctlNextPlease As控件
如果TypeOf(ctlNextPlease)为文本框,则
Dim ctlTextBox As TextBox=ctlNextPlease
如果Len(请求(ctlTextBox.ID))>ctlTextBox.MaxLength,则
Response.Write(“值”&Request(ctlTextBox.ID)&“submitted for”&ctlTextBox.ID&”超过了该值允许的最大长度(&ctlTextBox.MaxLength&”)
答复:End()
如果结束
如果结束
下一个
...
端接头
公共共享子getControlList(ByRef colControls作为集合,ByVal rootControl作为控件)
colControls.Add(rootControl)
如果rootControl.Controls.Count>0,则
对于每个控件,在rootControl.Controls中搜索为控件
getControlList(colControls,controlToSearch)
下一个
如果结束
端接头
这不起作用,他们仍然可以输入超过220个字符。如果出现问题,这是microsoft文档中的属性,则不需要删除MultiLine,但当您达到字符限制时-文本框被冻结,您无法从中删除任何内容。此功能在按键时生效,但是使用ctrl+v将大量文本粘贴到框中会打破这一点,您仍然可以输入尽可能多的文本like@Rich你们都是对的,这些年来我没有注意到这一点。我已经修复了当用户复制/粘贴到文本框时,投票答案不起作用的问题。因此,此答案的修改版本(即javascript/jquery中的处理)效果最好。纯代码答案是低质量的答案。您需要在代码中添加描述,否则将被视为低质量的答案
$(document).ready(function () {
$(".MultiLineLimit").on('change keydown paste input', function () {
this.value = (this.value.length <= 10 ? this.value : this.value.substring(0, 10));
});
});
<asp:TextBox ID="txtBodySMS" CssClass="MultiLineLimit" runat="server" Rows="10" TextMode="MultiLine" Width="100%"></asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox1" ID="RegularExpressionValidator1" ValidationExpression = "^[\s\S]{0,8}$" runat="server" ErrorMessage="Maximum 8 characters allowed."></asp:RegularExpressionValidator>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox2" ID="RegularExpressionValidator2" ValidationExpression = "^[\s\S]{8,}$" runat="server" ErrorMessage="Minimum 8 characters required."></asp:RegularExpressionValidator>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "TextBox3" ID="RegularExpressionValidator3" ValidationExpression = "^[\s\S]{5,8}$" runat="server" ErrorMessage="Minimum 5 and Maximum 8 characters required."></asp:RegularExpressionValidator>
<asp:TextBox ID="txtSample" MaxLength="3" runat="server"/>
textbox1.Attributes.Remove("MaxLength");
textbox1.Attributes.Add("MaxLength", "30");
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim colControls As Collection = New Collection
getControlList(colControls, Me)
For Each ctlNextPlease As Control In colControls
If TypeOf (ctlNextPlease) Is TextBox Then
Dim ctlTextBox As TextBox = ctlNextPlease
If Len(Request(ctlTextBox.ID)) > ctlTextBox.MaxLength Then
Response.Write("The value <i>" & Request(ctlTextBox.ID) & "</i> submitted for <b>" & ctlTextBox.ID & "</b> exceeds the permitted maximum length (" & ctlTextBox.MaxLength & ") for that value")
Response.End()
End If
End If
Next
...
End Sub
Public Shared Sub getControlList(ByRef colControls As Collection, ByVal rootControl As Control)
colControls.Add(rootControl)
If rootControl.Controls.Count > 0 Then
For Each controlToSearch As Control In rootControl.Controls
getControlList(colControls, controlToSearch)
Next
End If
End Sub