gpt4 book ai didi

knockout.js - 用 knockout validation 比较两个字段

转载 作者:行者123 更新时间:2023-12-04 18:10:57 24 4
gpt4 key购买 nike

我有一个表单的 View 模型,我正在尝试向使用 knockout 验证添加验证。

fromDate: ko.observable(
moment().subtract('days', 1).startOf('day').format(dateFormat)
),
toDate: ko.observable(
moment().startOf('day').format(dateFormat)
),

我需要确保起始日期小于截止日期。我似乎无法获得任何形式的自定义验证器来获取对第二个 observable 的引用。我需要一些类似的东西:
toDate: ko.observable(moment().startOf('day').format(dateFormat)).extend({
validation: {
validator: function (val, someOtherVal) {
return moment(val) >= moment(someOtherVal);
},
message: 'Must be greater or equal to From Date',
params: viewModel.fromDate()
}
}),

有任何想法吗?

更新

我确定我已经尝试过这个,但是将扩展方法移动到 onload 函数中是可行的。
$(function () {
ko.validation.configure({ decorateElement: true });

viewModel.toDate.extend({
validation: {
validator: function (val, someOtherVal) {
return moment(val) >= moment(viewModel.fromDate());
},
message: 'To date must be greater than from date',
}
});

ko.applyBindings(viewModel);
});

最佳答案

Knockout-validation 的核心规则无法将 observable 处理为验证参数。但是已经有一个推送请求可以解决这个问题:https://github.com/ericmbarnard/Knockout-Validation/pull/217

因此,您必须为此使用自定义角色。您应该将参数作为函数插入(通过省略括号)。这将使 knockout 验证能够对参数的变化使用react。

function ViewModel() {
var self = this; // capture this to be able to reference properties

self.fromDate = ko.observable(
moment().subtract('days', 1).startOf('day').format(dateFormat)
);
self.toDate = ko.observable(
moment().startOf('day').format(dateFormat)
).extend({
validation: {
validator: function (val, someOtherVal) {
return moment(val) >= moment(someOtherVal());
},
message: 'Must be greater or equal to From Date',
params: self.fromDate
}
}),
}

关于knockout.js - 用 knockout validation 比较两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14582450/

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