【问题标题】:knockout textbox validation error敲除文本框验证错误
【发布时间】:2014-12-04 09:48:49
【问题描述】:

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

这是我的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>

当我运行它时,我在“this.isValid()”处得到“未定义不是函数”

请帮帮我。

【问题讨论】:

  • 你应该先说 var self = this;初始化虚拟机以避免混淆时。你得到它的错误是因为他没有找到 isValid() 。尝试将其更改为自我。如果这不起作用,请检查您的所有脚本是否实际上都正确包含。
  • 我在保存功能中添加了 var self = this 并检查了脚本,但出现同样的错误,..请帮助我。
  • 你误会了。您应该添加 var self = this;作为 var vm = ko.validatedObservable({ 之后的第一条语句。然后将 if(this.isValid()) 更改为 if(self.isValid()) 并再次检查。
  • 不允许将 var self=this 作为 var vm = ko.validatedObservable({... 'unexpected identifier' 错误获取后的第一条语句...如果可能,请提供给我 JSFiddle跨度>

标签: knockout-2.0 knockout-validation


【解决方案1】:

我更喜欢这种模式来使用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);

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 2013-02-27
    • 1970-01-01
    • 2012-05-22
    • 2014-10-19
    • 2015-11-13
    • 2012-01-03
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多