gpt4 book ai didi

knockout-validation - KO 验证和 bootstrap-datetimepicker

转载 作者:行者123 更新时间:2023-12-04 00:12:45 32 4
gpt4 key购买 nike

我正在尝试验证一个时间字段是否大于另一个时间字段。时间由 bootstrap-datetimepicker 输入, 并使用 KO 验证进行验证。

我的问题是验证似乎发生在文本框的自动更正之前。

如何在应用自动更正后进行验证?

代码:

var vm = function () {
var self = this;
self.startTime = ko.observable().extend({ required: true });
self.endTime = ko.observable()
.extend({
validation: {
validator: function (val) {
if (self.startTime() === '' || val === '') {
return true;
}
return new Date(val) > new Date(self.startTime());
},
message: 'Event must finish after it started'
}
});
(function () {
$('#event-start-time').datetimepicker({
pickDate: false
});
$('#event-end-time').datetimepicker({
pickDate: false
});
$('#event-end-time').on("change.dp", function (e) {
//I've tried with and without this
//self.endTime.valueHasMutated();
});
})();
};

结果:

enter image description here

Fiddle

最佳答案

可能有点晚了,但这是我开发的:

假设您将结束日期作为可观察的,然后使用自定义“dateBefore”验证

    this.endDate = ko.observable(new Date().addHours(3).toGMTString()).extend({
required: true,
dateBefore: self.startDate()
});

创建自定义验证:

    ko.validation.rules['dateBefore'] = {
validator: function (val, otherVal) {
var d1 = new Date(val),
d2 = new Date(otherVal);
return d1 > d2;
},
message: 'The end date must be before the start date'
};
ko.validation.registerExtenders();

如果您需要进一步的解释,请发表评论

关于knockout-validation - KO 验证和 bootstrap-datetimepicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255554/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com