Jquery 万无一失的不引人注目的验证

Jquery 万无一失的不引人注目的验证,jquery,foolproof-validation,Jquery,Foolproof Validation,我想使用万无一失的验证比较两个日期字段,其中第二个字段必须大于第一个字段。但是,两者都可以为null。即使使用PassOnNull=True,当两个字段都为null时,验证也会失败。使用[GreaterThanOrEqualTo]时,这与预期一样有效,但我的第二次约会时间必须更长 [GreaterThan("DateFrom", PassOnNull = true, ErrorMessage = "Date To must be greater than Date From")] public

我想使用万无一失的验证比较两个日期字段,其中第二个字段必须大于第一个字段。但是,两者都可以为null。即使使用PassOnNull=True,当两个字段都为null时,验证也会失败。使用[GreaterThanOrEqualTo]时,这与预期一样有效,但我的第二次约会时间必须更长

[GreaterThan("DateFrom", PassOnNull = true, ErrorMessage = "Date To must be greater than Date From")]
public DateTime? DateTo { get; set; }
在查看源代码时,当其中一个字段为null(但不是同时为null)时,它会绕过验证。这背后有什么道理吗?这对我来说没什么意义。我可以很容易地更改源代码,但作为一个NuGet安装,我只能任由它被覆盖。否则,我可以手动将其包括在内并完成。以下是源代码片段:

    if (passOnNull) {

        var isNullish = function (input) {
            return input == null || input == undefined || input == "";
        };

        var value1nullish = isNullish(value1);
        var value2nullish = isNullish(value2);

        if ((value1nullish && !value2nullish) || (value2nullish && !value1nullish))
            return true;
    }
以下修改对我来说在我能想到的几乎任何情况下都更有意义,因为必填字段仍有自己的验证要通过:

        if (value1nullish || value2nullish)
            return true;

有没有其他方法可以验证这一点,或者仅仅需要一个修复程序是万无一失的?

您可以在
输入类型=“date”
输入类型=“date>,
两个
输入类型=“date>,
属性的
处使用
事件
数组.prototype.every()
eq()
.valueAsDate
属性
元素

var-dates=$(“输入[type=date]”);
日期。更改(功能(e){
if(dates.get().every)函数(el){
返回el.valueAsDate!==null
}) 
&&dates.eq(1)[0]。valueAsDate>dates.eq(0)[0]。valueAsDate){
警报(真)
}否则{
警报(错误)
}
})