【发布时间】:2014-03-15 09:30:34
【问题描述】:
我正在尝试使用 Knockout 创建一个复选框列表,并要求使用 Knockout Validation 至少选中一个复选框。
我遇到的问题是,如果未选中复选框,则所需的验证消息会出现多次,每个选项一次。我该如何解决这个问题?
工作示例:http://jsfiddle.net/aaronhoffman/BtK3t/
HTML
<script id="koValidationCustomMessageTemplate" type="text/html">
<em class="text-danger" data-bind="validationMessage: field"></em>
</script>
<div class="col-sm-5" data-bind="foreach: TheCheckboxListOptions">
<div class="checkbox">
<label>
<input type="checkbox" data-bind="value: $data, checked: $root.TheCheckboxListSelectedValues" /><span data-bind="text: $data"></span>
</label>
</div>
</div>
和javascript
ko.validation.configure({
registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: "koValidationCustomMessageTemplate"
});
var TheViewModel = {
TheCheckboxListOptions: [
"Option 1",
"Option 2",
"Option 3",
"Option 4"
],
TheCheckboxListSelectedValues: ko.observableArray().extend({
required: { message: "At least one option is required." }
}),
};
ko.applyBindings(TheViewModel);
【问题讨论】:
-
您能否更改视图模型以包含一个计算布尔属性,该属性返回 true 的选定数量大于 1,并针对该值而不是整个数组编写验证?
-
谢谢,我正在使用与今天类似的解决方案,我只是在寻找更好的解决方案。
标签: knockout.js checkboxlist knockout-validation