Jquery 万无一失的不引人注目的验证
我想使用万无一失的验证比较两个日期字段,其中第二个字段必须大于第一个字段。但是,两者都可以为null。即使使用PassOnNull=True,当两个字段都为null时,验证也会失败。使用[GreaterThanOrEqualTo]时,这与预期一样有效,但我的第二次约会时间必须更长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
[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){
警报(真)
}否则{
警报(错误)
}
})