Asp.Net简记 设置TextBox控件MaxLength属性无效问题

在ASP.NET中,遇到TextBox控件设置MaxLength属性后仍能输入超过限制长度的内容。问题源于TextMode设为'MultiLine'时,MaxLength无效。解决方法包括将TextMode改为'SingleLine',或者结合Wrap属性。另外,可使用RequiredFieldValidator和RegularExpressionValidator控件进行内容验证,但无法直接限制输入长度,还可以考虑添加客户端JS限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 问题描述

    在使用TextBox时,发现了一个问题,就是设置该控件的MaxLength属性之后并没有作用,长度超出范围之后仍能够输入内容。
    通过查找资料发现,可能是TextBox控件在TextMode=“MultiLine”时,MaxLength属性的限制就失去了作用。
    代码如下:

<asp:TextBox ID="Name" runat="server" Width = "300px" onfocus="this.select()" MaxLength="50" >
</asp:TextBox>
  • 解决办法

    之后在属性窗口中找到TextMode属性,其值为SingleLine。后发现有一Wrap属性效果相仿,将其设置为False后,发现MaxLength属性可以起作用了,问题解决。
    代码如下:

<asp:TextBox ID="Name" runat="server" Width = "300px" onfocus="this.select()" MaxLength="50" Wrap="False">
</asp:TextBox>
  • 其他解决办法
  • 1.使用 RequiredFieldValidator控件 和 RegularExpressionValidator对TextBox控件 进行限制。
    其中 RequiredFieldValidator控件 作用是验证是否输入内容;RegularExpressionValidator对TextBox控件 作用是验证是否符合格式(需要用到正则表达式,代码中的正则表达式不够完善)。
    这种办法只能够在用户输入完毕之后对TextBox的内容进行验证,不能直接对其输入长度进行限制。
    代码如下:
<asp:TextBox ID="Name" runat="server" Width = "300px" onfocus="this.select()" MaxLength="50" Wrap="False">
</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat = "server" ControlToValidate = "Name" InitialValue = ""  Text = "名称不能为空" ErrorMessage = "*" Font-Size = "13px" Width = "110px" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat = "server" ControlToValidate = "Name" ErrorMessage = "*" Text = "长度限制100字符(若长度无误,请删改标点符号)" Font-Size = "13px"  ValidationExpression = "[a-zA-Z0-9_\.\u4e00-\u9fff`~!@#$%^&\*()-_=+\{\}\[\]\\\;\'\,\<\>\?\/\s\、]{1,100}" style = " position:relative; left:-115px;"></asp:RegularExpressionValidator>
  • 2.添加一些客户端限制的JS代码。(未尝试此办法)

前台:

<script language="javascript">            
    function isOver(sText,len)
    {
        var intlen=sText.value.length;
        if (intlen>len)
        {
            alert("The content length must Less than or Equal "+len);
            sText.focus();
            sText.select();
        }
    }
</script>
<asp:TextBox id="txtName" style="Z-INDEX: 102; LEFT: 200px; POSITION: absolute; TOP: 104px" runat="server" TextMode="MultiLine" Height="112px" Width="271px"></asp:TextBox>

后台:

Public void Page_Load(object sender, System.EventArgs e)
{
     this.txtName.Attributes.Add("onblur","isOver(this,1000);");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值