8不小于或等于30?

时间:2012-11-23 13:17:14

标签: javascript jquery asp.net .net

好吧,我有一个RangeValidator

<asp:RangeValidator ID="DateRangeValidator" runat="server" ControlToValidate="DateRange"
    ErrorMessage="The date range must be at least 1 day, not more than 30, and neither date can be greater than today's date."
    EnableClientScript="true" MinimumValue="1" MaximumValue="30" CssClass="errortext span9 offset2"
    Display="Dynamic" />

正如您所见,最小值为1,最大值为30。


这是验证一个隐藏的字段(目前可见,因为我正在测试)

<asp:TextBox ID="DateRange" runat="server" ClientIDMode="Static" />

正如您所看到的,我已将客户端ID设置为静态,因此它可以很好地找到控件。


当两个日期之一发生变化时,此JavaScript方法会填充该隐藏字段:

$('.datepicker').change(function () {
    var startDate = new Date($('#StartDate').val());
    var endDate = new Date($('#EndDate').val());

    if (startDate > Date() || endDate > Date()) {
        $('#DateRange').val(-1);
    }
    else {
        var nDifference = endDate - startDate;
        var one_day = 1000 * 60 * 60 * 24;
        $('#DateRange').val(Math.round(nDifference / one_day) + 1);
    }

    Page_ClientValidate(null);
});

这种方法从设置正确的天数差异的角度来看是完美的。


Page_ClientValidate被调用时,我已经调试它以确保验证器按预期触发,并且它是,并且它具有我期望的值。当检查到最小值时,它会抓取1 ...当它与值8进行比较时...它正在按预期进行评估... 8大于或等于1.

然而,当检查最大值时,即使它最大值为30 ......当它与值8相比时......表示8小于或等于30的表达式被评估为假


我真的希望有人可以帮助我!

世界上8岁不少于30岁?

3 个答案:

答案 0 :(得分:10)

您错过RangeValidator上的Type="Integer"

答案 1 :(得分:3)

Type="Integer"添加到您的范围验证器

答案 2 :(得分:2)

您需要在RangeValidator上设置类型:

<asp:RangeValidator ID="DateRangeValidator" runat="server" ControlToValidate="DateRange"
    ErrorMessage="The date range must be at least 1 day, not more than 30, and neither date can be greater than today's date."
    EnableClientScript="true" MinimumValue="1" MaximumValue="30" CssClass="errortext span9 offset2"
    Display="Dynamic"
    Type="Integer" />

相关的MSDN文档:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.basecomparevalidator.type.aspx