我正在使用customValidator验证日期是否在有效范围内或不在文本框中。如果您手动输入日期并调用我的自定义ClientValidationFunction,则效果很好。不幸的是,如果我使用弹出日历选择日期,则不会触发customValidator。
我希望能更好地理解asp:CustomValidators是如何触发的。
我试图强制输入验证在日历关闭但没有运气时重新进行验证。
<asp:CustomValidator ID="ValidDateCheck" runat="server" ControlToValidate="txtDate" ErrorMessage="Please enter a valid date." ClientValidationFunction="clientValidate"
EnableClientScript="True" Display="Dynamic" CssClass="dateboxRJS-validator text-danger" ValidateEmptyText="true"></asp:CustomValidator>
JavaScript
clientValidate = function (source, args) {
console.log("validating...");
var s = document.getElementById(source.controltovalidate);
var minDate = moment("1900-01-01");
var maxDate = moment().add(200, 'y');
var inputDate;
if (moment(s.value, "MM/DD/YYYY", true).isValid()) {
inputDate = moment(s.value, "MM/DD/YYYY");
console.log(s.value);
console.log("break");
if (!inputDate.isBetween(minDate, maxDate)) {
args.IsValid = false;
s.classList.add("is-invalid");
Page_BlockSubmit = true;
return false;
} else {
s.classList.remove("is-invalid");
args.IsValid = true;
Page_BlockSubmit = false;
return true;
}
}
}
});