Gau*_*rav 9 javascript jquery knockout.js
我正在使用knockout.js和knockout.validation插件.我正在尝试验证复选框,如果选中它的有效则无效.为此我在淘汰赛中创建了一个自定义的valdation属性:
ko.validation.rule['checked'] = {
validator: function (value) {
if (!value) {
return false;
}
return true;
}
};
Run Code Online (Sandbox Code Playgroud)
而我的观点模型是:
function VM()
{
var self = this;
self.Approve = ko.observable(false).extend({
checked: { message: 'Approval required' }
});
self.Errors = ko.validation.group(self);
self.Validate = function(){
if(self.Errors().length > 0)
self.Errors.showAllMessages();
};
}
Run Code Online (Sandbox Code Playgroud)
但验证不起作用.谁能告诉我这里我做错了什么?
您当前的方法存在一些问题:
ko.validation.rule
它应该是ko.validation.rules
ko.validation.registerExtenders();
应在首次尝试使用自定义验证程序之前完成自定义规则定义和调用.为了显示验证,您需要使用绑定将其绑定到某处validationMessage
:
<span data-bind='validationMessage: Approve'></span>
Run Code Online (Sandbox Code Playgroud)所以固定脚本:
ko.validation.rules['checked'] = {
validator: function (value) {
console.log(value);
if (!value) {
return false;
}
return true;
}
};
ko.validation.registerExtenders();
function VM()
{
var self = this;
self.Approve = ko.observable(false).extend({
checked: { message: 'Approval required' }
});
self.Errors = ko.validation.group(self);
self.Validate = function(){
if(self.Errors().length > 0)
self.Errors.showAllMessages();
};
}
ko.applyBindings(new VM());
Run Code Online (Sandbox Code Playgroud)
和HTML:
<input type="checkbox" data-bind="checked: Approve" />
<span data-bind='validationMessage: Approve'></span>
<button type="button" data-bind="click: Validate">Submit</button>
Run Code Online (Sandbox Code Playgroud)
你可以在这里试试:演示.
小智 5
您还可以使用相等的本机验证器:
self.Approve = ko.observable(false).extend({
equal: { params: true, message: 'check must be ticked' }
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5722 次 |
最近记录: |