我正在尝试询问有关在页面加载时运行的async knockout.js验证的问题,并且我试图在jsfiddle上重现该问题。
事情是,尽管我的盒子上运行了更复杂的场景,但我无法获得最基本的工作示例。这有什么问题?
我必须发布代码:
<div id="vm">
<input type="text" data-bind="value: validatableField" />
<p data-bind="validationMessage: validatableField"></p>
<button data-bind="click: alertValue">value is alerted ok, but doesn't validate</button>
</div>
var Vm = function(){
var self = this;
self.validatableField = ko.observable().extend({ equal: 2 });
self.alertValue = function(){
alert(self.validatableField());
};
};
ko.applyBindings(new Vm(), document.getElementById('vm'));
答案 0 :(得分:4)
您的代码没有任何问题。
然而,当前版本的验证插件(cdnjs 1.0.2)已经很老了,有一个错误会阻止ko.validation.registerExtenders
正常工作。从那以后这个错误has been fixed。
作为一种解决方法,您需要在小提琴的开头调用ko.validation.registerExtenders()
:
ko.validation.registerExtenders();
var Vm = function(){
var self = this;
self.validatableField = ko.observable().extend({ equal: "2" });
self.alertValue = function(){
alert(self.validatableField());
};
};
ko.applyBindings(new Vm(), document.getElementById('vm'));
演示JSFiddle。