我正在尝试在可观察数组上使用组Knockout Validation。我想只在每个数组项成功验证时启用提交按钮。
我不确定我哪里出错了。任何人都可以建议我是否接近以下?为简洁起见,我删除了与UI其他功能相关的代码,只留下了相关的代码。
我还搜索了Stackoverflow的解决方案,但找不到解决此特定问题的解决方案。
请指教。感谢。
敲除
ko.validation.configure({
registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: null,
errorMessageClass: "input-notification error png_bg",
grouping: {
deep: true
}
});
function Integer(integerValue) {
this.integerValue = ko.observable(integerValue).extend({ number: true }).extend({ required: { message: 'Please enter an integer' } });
}
var viewModel = ko.mapping.fromJS(integerList, options);
viewModel.integers = ko.observableArray([
new Integer("0"),
new Integer("0")
]);
viewModel.errors = ko.validation.group(viewModel.integerlists);
ko.applyBindings(viewModel);
HTML
<div data-bind="template: { name: 'integerTemplate', foreach: integers }"></div>
<script id="integerTemplate" type="text/html">
<input class="text-box single-line text-input large-input" type="number" data-bind="value: integerValue, valueUpdate: 'afterkeydown', css: { error: !integerValue.isValid() }" required />
</script>
<button class="large-input wide" data-bind="click: save, enable: errors().length == 0">Sort Integers</button>
答案 0 :(得分:0)
如果你正在使用这个看起来像你的库,我建议你编写一个自定义验证器(参见一次性验证器)并将其扩展到你的observableArray。
在这个自定义验证器的内部,你只需循环并检查数组是否有效(没有值为null)