【问题标题】:KnockoutJS check if on textbox is greater than another textboxKnockoutJS 检查文本框是否大于另一个文本框
【发布时间】:2013-08-17 00:25:01
【问题描述】:

我是 KnockoutJS 的新手,我在验证时遇到了一些问题。我有两个文本框,我正在尝试验证以确保 textbox1 输入值大于 textbox2 输入值。

<input type="number" id="tbLow" name="tbLow" data-bind="value: model.tbLow"/>
<input type="number" id="tbHigh" name="tbHigh" data-bind="value: model.tbHigh"/>

这是对 tbLow 的验证:

self.model.tbLow.extend({
    min: 1,
    max: 999999,
    maxLength: 6,
    validation: { validator: greaterThan, 
                  message: 'tbHigh must be larger than Car tbLow.', 
                  params: tbHigh }

});

这里是验证函数:

var greaterThan = function (tbLow, tbHigh ) {
    return CarNumberHigh > CarNumberLow;
}

我无法获得tbHigh 的值... 有什么想法吗??

【问题讨论】:

  • 您是否在我遗漏的地方使用了 getter 函数? tgHigh()
  • 什么getter函数? - 其他验证运行良好(最小、最大长度等)
  • 如果您需要“获取” tbHigh 的值并且它是可观察的,当您在视图模型中引用它时,您需要使用 getter 函数 tbHigh()。我不太使用验证插件,但尝试将您的参数更改为参数:tbHigh()
  • 所以我应该更改验证功能?验证:{验证器:大于,消息:'车号高必须大于车号低。',参数:tbHigh()}正在抛出错误:TypeError:CarNumberHigh不是函数
  • 您是否尝试过调试并查看传递给您的大于函数的值?很可能您只需要执行 tbHigh observable

标签: knockout.js knockout-validation


【解决方案1】:

扩展器包装了一个 observable。您是否将 model.tbLow 的值设置为 observable.extend() 函数的结果?

您的代码应如下所示:

self.model.tbLow = self.model.tbLow.extend({ ... });

或者如果你从你的模型中扩展它...

this.tbLow = ko.observable(...).extend({ ... });

您是自己编写了验证扩展程序还是使用了您找到的东西?您可以发布或链接到代码吗?否则我们不知道您是否正确使用它,我们无法知道正在发送的 'greaterThan' 函数是什么。

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多