如何限制文本框中允许的字符数?

时间:2011-05-24 13:59:36

标签: asp.net

<asp:TextBox ID="txtBodySMS" runat="server" Rows="10"                          
           TextMode="MultiLine" Width="100%"></asp:TextBox>

这是我的文本框。如何限制用户在其中键入的字符数?

13 个答案:

答案 0 :(得分:20)

MaxLength不适用于具有TextMode="MultiLine"的ASP.NET到文本框。一个简单的方法并保持MultiLine标记将是添加:

onkeypress="return this.value.length<=10" 

以10为限。像这样:

<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" onkeypress="return this.value.length<=10" TextMode="MultiLine" Width="100%"></asp:TextBox>

EDIT选项一(服务器端)以上示例多年来指出了一些问题。根本问题是多行textBox呈现为文本区域,MaxLength被删除。我们还可以通过强制重新附加MaxLength而不是附加onkeypress来修复页面后面的C#或VB asp.net代码。

    protected void Page_Load(object sender, EventArgs e)
    {
        txtBodySMS.Attributes.Add("maxlength", "10");
    }

EDIT选项二(客户端):这是一个简单的jquery解决方案。在头脑中包含以下脚本,而不是附加onkeypress或编辑服务器端代码。

    $(document).ready(function () {
        $(".MultiLineLimit").on('change keydown paste input', function () {
            this.value = (this.value.length <= 10 ? this.value : this.value.substring(0, 10));
        });
    });

现在只需将MultiLineLimit课程添加到<asp:TextBox>的{​​{1}}个文本框中。

TextMode="MultiLine"

请记住,在任一情况下,都可以删除客户端验证。如果将其存储在数据库中,它也应始终在服务器端验证。

答案 1 :(得分:17)

这对我有用。我没有保留MultiLine属性。

<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="2" Width="100%"></asp:TextBox>

答案 2 :(得分:11)

的MaxLength = “的Int32”

<asp:TextBox ID="txtBodySMS" runat="server" Rows="10" MaxLength="220"                         
           TextMode="MultiLine" Width="100%"></asp:TextBox>

答案 3 :(得分:9)

最大字符长度验证(允许最多8个字符)

<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>

最小字符长度验证(最少需要8个字符)

<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>

最小和最大字符长度验证(最少5个字符和最多8个字符)

<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>

答案 4 :(得分:3)

AFAIK maxlength从未与“多线”模式配合使用。因此,我建议一些客户端js / jquery和服务器端来解决这个问题。

答案 5 :(得分:0)

将MaxLength属性设置为字符数。

答案 6 :(得分:0)

您正在寻找MaxLength:看here

答案 7 :(得分:0)

您是否尝试在TextBox上设置MaxLength属性? Reference

答案 8 :(得分:0)

为文本框添加FliterTextBoxExtender类型的扩展器
它看起来应该是那样

<asp:TextBox ID="TxtCellular" runat="server"></asp:TextBox>
<asp:FilteredTextBoxExtender ID="TxtCellular_FilteredTextBoxExtender" 
                    runat="server" Enabled="True" TargetControlID="TxtCellular" FilterType="Numbers">
</asp:FilteredTextBoxExtender>

答案 9 :(得分:0)

重要的是要注意单独使用MaxLength(没有其他属性可以添加,就像其他答案一样)仅适用于.NET Framework 4.5及更高版本中的项目。

我正在使用4.5,它适用于我的项目

<asp:TextBox ID="txtSample" MaxLength="3" runat="server"/>

TextBox.MaxLength Property (MSDN Documentation)

答案 10 :(得分:0)

只需在.cs页面加载

中键入两行以下
textbox1.Attributes.Remove("MaxLength");
textbox1.Attributes.Add("MaxLength", "30");

希望它会有所帮助!

答案 11 :(得分:0)

在ASP.NET的设计中似乎有一个奇怪的疏漏(不考虑textareas异常),您可以设置文本框的MaxLength属性,但是似乎没有提供方法来强制此限制在服务器端无需显式添加验证器。如果您有很多字段,并且只想确保没有人通过注入自己的POST数据来弥补表格的限制,那就太麻烦了。因此,我写了这篇文章,这似乎可以解决问题-显然您可能不想强制Response.End

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

答案 12 :(得分:0)

df.groupby('session_id')['duration'].sum()