Naz*_*sym 3 html javascript knockout.js knockout-validation
我正在使用淘汰赛,并希望用户在html选择标签中选择一个项目.默认情况下选择空值
<select required>
<option value="">--Select something</option>
<option value="True">True</option>
<option value="False">False</option>
Run Code Online (Sandbox Code Playgroud)
而viewModel包含:
self.sampleBooleanValue.extend({required : true});
Run Code Online (Sandbox Code Playgroud)
我希望以下绑定会有所帮助
<select data-bind="value: sampleBooleanValue" required>
....
</select>
Run Code Online (Sandbox Code Playgroud)
验证有效,但没有为选择标记添加css类.任何人都可以告诉为什么这不起作用?PS它适用于其他输入标签.
我在一个没有应用错误类的更复杂的模型上遇到了同样的情况,在这种情况下我创建了一个selectedItemNotCaption验证器,并且在required: true没有的情况下工作(我相信它可能与我的标记上的错误有关 -我没有关闭,但这确实让我进一步调查).
model = function () {
var self = this;
self.optionsAvailable = ['one', 'two'];
self.selectedOptionWithRequired = ko.observable().extend({
required: true
});
self.selectedOption = ko.observable().extend({
selectedItemNotCaption: true
});
self.submit = function () {
console.log("checking for errors...");
self.errors.showAllMessages();
};
self.errors = ko.validation.group(self);
};
ko.validation.configure({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error'
});
ko.validation.rules['selectedItemNotCaption'] = {
validator: function (val) {
console.log("in validator..." + val);
return (typeof val != "undefined");
},
message: 'Please select an option'
};
ko.validation.registerExtenders();
ko.applyBindings(new model());
Run Code Online (Sandbox Code Playgroud)