Knockout验证hello world没有在jsfiddle上运行

时间:2013-07-22 23:38:40

标签: knockout.js jsfiddle knockout-validation

我正在尝试询问有关在页面加载时运行的async knockout.js验证的问题,并且我试图在jsfiddle上重现该问题。

事情是,尽管我的盒子上运行了更复杂的场景,但我无法获得最基本的工作示例。这有什么问题?

http://jsfiddle.net/C5rSm/4/

我必须发布代码:

<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'));

1 个答案:

答案 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