Javascript 淘汰验证未显示“选择多个”的错误消息
我设置了一个带有敲除验证插件的页面,用于验证用户输入。我有两个元素:一个是常规的Javascript 淘汰验证未显示“选择多个”的错误消息,javascript,knockout.js,knockout-validation,Javascript,Knockout.js,Knockout Validation,我设置了一个带有敲除验证插件的页面,用于验证用户输入。我有两个元素:一个是常规的select,另一个是select和multiple集合。这样做的目的是使这两个元素都是必需的 验证调用正在启动,但问题是没有显示select multiple的错误消息 以下是我的js代码: ko.validation.init(); function isNotUndefined(val) { return (typeof val != "undefined"); }
select
,另一个是select
和multiple
集合。这样做的目的是使这两个元素都是必需的
验证调用正在启动,但问题是没有显示select multiple的错误消息
以下是我的js代码:
ko.validation.init();
function isNotUndefined(val) {
return (typeof val != "undefined");
}
function isArrayNotEmpty(val) {
return (val.length > 0);
}
var viewModel = function () {
var self = this;
self.memberType = ko.observable().extend({
validation: {validator: isNotUndefined, message:'Please select gender'}
});
self.seekingTypes = ko.observableArray().extend({
validation: {validator: isArrayNotEmpty, message:'At least one option is required'}
});
self.memberTypeSource = [
{ id: 1, text: 'Man' },
{ id: 2, text: 'Woman' }
];
self.errors = ko.validation.group(self);
self.doValidation = function () {
console.log('error count=' + self.errors().length);
if (self.errors().length == 0) {
console.log('Yay.');
} else {
self.errors.showAllMessages(true);
}
};
return {
memberType: self.memberType,
seekingTypes: self.seekingTypes,
memberTypeSource: self.memberTypeSource,
errors: self.errors,
doValidation: self.doValidation,
}
};
addEventListener('load', function () {
ko.applyBindings(viewModel);
});
这是html:
性别:
寻求:
提交
我还使用输入文本元素测试了验证,错误消息显示良好
非常感谢您的帮助。验证插件只修改
值
和已选中的
绑定,使它们自动“验证”兼容
因此,selectedOptions
不会自动验证,因此您需要在ko之前使用selectedOptions
调用makebindingHandlerValidable
。applyBindings
使验证与您的multi-select一起工作:
ko.validation.makeBindingHandlerValidatable('selectedOptions');
ko.applyBindings(new viewModel);
演示
作为替代解决方案,您还可以选择以下选项中的validationCore
(或单独的span):
<select data-bind="selectedOptions: seekingTypes,
options: memberTypeSource,
optionsText: 'text',
optionsValue: 'id', validationCore: seekingTypes"
multiple></select>
演示。非常感谢您为我的问题提供了不是一个而是三个解决方案,非常感谢。顺便问一句,你知道我在哪里可以找到关于敲除验证的好文档(除了github的wiki页面上的文档)?KO的哪个版本是
MakeBindingHandlerValidable
?我得到一个错误,说makeBindingHandlerValidable不是一个函数
…@Axitation此函数是KO验证库的一部分,但是我不知道它添加到了哪个版本。它在2.0.3版本中运行良好,在1.0.2版本@Axitation中,我也得到了相同的错误,这一个对我有效: