好吧,我有一个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个?