淘汰文本框验证错误

时间:2014-12-04 09:48:49

标签: knockout-2.0 knockout-validation

我面临淘汰基本文本框验证的问题

这是我的HTML

<input type="text" data-bind="value:text" />
<br />
<br />
<input type="button" data-bind="click:save" value="save" />

这是我的剧本

$(document).ready(function () {

        ko.validation.registerExtenders();

        ko.validation.configure({
            registerExtenders: true,
            decorateElement: true
        });

        var vm = ko.validatedObservable({

            text: ko.observable().extend({
                required: true
            }),
            save: function () {
                debugger;
                if (this.isValid()) {
                    alert('success');
                }
                else {
                    this.errors.showAllMessages();
                    alert('error');
                }
            }
        });
        ko.applyBindings(vm);

    });

我已经包含以下脚本

<script src="/Scripts/jquery-2.1.1.min.js" type="text/javascript"></script>
<script src="/Scripts/knockout-2.1.0.js" type="text/javascript"></script>
<script src="/Scripts/knockout.mapping-latest.js" type="text/javascript"></script>
<script src="/Scripts/knockout.validation.min.js" type="text/javascript"></script>

当我运行这个时,我得到了“未定义不是一个功能&#39; at&#34; this.isValid()&#34;

请帮帮我。

1 个答案:

答案 0 :(得分:0)

我更喜欢这种模式使用validatedObservable - http://codepen.io/dmoojunk/pen/PwNbEL

ko.validation.registerExtenders();

ko.validation.configure({
  registerExtenders: true,
  decorateElement: true
});

var vm = function(){
  var self = this;
  self.text= ko.observable().extend({
    required: true
  }),
  self.save= function () {
    if (this.isValid()) {
      alert('success');
    }
    else {
      this.errors.showAllMessages();
      alert('error');
    }
  }
};
var viewmodel = ko.validatedObservable(new vm())();
ko.applyBindings(viewmodel);