【发布时间】: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