asp.net中的范围验证器无法按预期工作

时间:2014-01-06 13:44:10

标签: c# asp.net

我的页面中有一个文本框的RV:

<asp:RangeValidator ID="titleRV" runat="server" ControlToValidate="titletxt" Font-Bold="True" Font-Size="Small" ForeColor="Red" MinimumValue="4" MaximumValue="100" Type="Integer" SetFocusOnError="True" Display="Dynamic" >Must be more than 3 !</asp:RangeValidator>

当我在运行时在文本框中键入任意数量的字符时,无论我输入的字母是否少于3个,都会显示范围验证器,如果我增加了字母数,它就不会消失!有什么帮助吗?

4 个答案:

答案 0 :(得分:2)

Rangevalidator用于检查输入的值是否介于两个值之间,而不是它是一定长度。您似乎要寻找的是长度验证器

 <asp:TextBox ID="txtTextBox" MaxLength="100" .../>

我认为内置的最小长度验证器并不存在,但您可以轻松地在后面的代码中添加一些东西

if(txtTextBox.Length < 3)
    // display error message

或正则表达式验证器

<asp:RegularExpressionValidator ID="valLength" runat="server"    
    ErrorMessage="Must be between 3 and 100 characters"
    ControlToValidate="txtTextBox"    
    ValidationExpression="^[a-zA-Z0-9'@&#.\s]{3,100}$" />

答案 1 :(得分:2)

范围验证器旨在检查您是否输入了范围内的值 - 例如0到100之间的数字。听起来我觉得您正在尝试检查输入了多少个字母?

假设我已经正确理解我的建议是使用RegEx验证器。

您可以使用如下表达式:

<asp:RegularExpressionValidator ID="valLength" runat="server"    
    ErrorMessage="Your text must be between 3 and 100 characters"       
    ValidationExpression="^[0-9a-zA-Z]{3,}$"
    ControlToValidate="txtTextBox" />

这显然需要根据您允许的字符进行调整

答案 2 :(得分:1)

您的范围验证器会验证该数字是否在4到100之间,而不是文本框中的字符数。

这将解决问题(CustomValidator):

<asp:TextBox runat="server" ID="titletxt" />    
<asp:CustomValidator runat="server" ID="CustomValidator1" ControlToValidate="titletxt"
    Text="The text length should be between 4 and 20" 
    ClientValidationFunction="clientValidate" Display="Dynamic">
</asp:CustomValidator>


<script type="text/javascript">
function clientValidate(sender, args) {
    if (args.Value.length < 4 ||args.Value.length > 20) {
        args.IsValid = false;
    }
}

答案 3 :(得分:1)

请试试这个......

    <script type="text/javascript">
        function test()
        {
            if (document.getElementById('titletxt').value.length < 3) {
document.getElementById('spMessage').style.display = '';
                return false;
            }
            else {
document.getElementById('spMessage').style.display = 'none';
                return true;
            }
        }
        </script>

... HTML

<asp:TextBox runat="server" ID="titletxt" onblur="return test()"></asp:TextBox>
<span id='spMessage' style="font-weight:bold; font-size:small; color:Red; display:none">Enter more than 3 char!</span>

您可以创建此javascript和调用test()函数来验证文本框....