【发布时间】:2014-10-27 18:03:13
【问题描述】:
我正在尝试编写对输入字段值的验证。 如果值错误,那么我想设置一个默认值。 不幸的是,它正在检查它,设置默认值,然后设置错误的值。 我正在尝试使用扩展器验证。在我尝试使用“订阅”但再次没有成功之前。这是我关于场景的示例
在输入开始时我有 0.56 我将其更改为 0.95 。所以扩展器正在检查 0.95 是否大于 0.85,并将值更改为 0.85。不幸的是,在我的情况下仍然是 0.95。我在 target(0.85) 之后添加了一些警报,我可以看到该值正在更改为 0.85,但之后又是 0.95。
知道我做错了什么吗?
这是我的代码
ko.extenders.checkInput = function (target) {
var result = ko.computed({
read: target,
write: function (newValue) {
if (newValue > 0.85) {
target(0.85);
}
});
//return the new computed observable
result(target());
return result;
};
self.inputValue = ko.observable(0.56).extend({ checkInput: '' });
【问题讨论】:
-
除了缺少括号外,这似乎工作正常,请参阅jsfiddle.net/a75oqxtw
-
如果这样写的话就可以了。不幸的是,当我在前端输入字段时,它不起作用
-
您能否尝试使用jsfiddle.net 重现您的情况。我想也许你没有在输入中使用扩展的 observable。
-
不幸的是,我对 jsfiddle 有一些问题,这就是为什么我在 CodePen 中创建我的示例的原因,第一次更改得到验证,但最新没有
标签: knockout.js knockout-validation