【问题标题】:Knockout-validation group not working as expected while finding length of errors?在查找错误长度时,淘汰赛验证组没有按预期工作?
【发布时间】:2014-10-22 08:52:13
【问题描述】:

我的函数中有一个 observable,我只想对其应用 required 验证。所以我就这样做了

查看模型:

self.textareadata = ko.observable().extend({required:true});

var errors = ko.validation.group(self.textareadata);

单击按钮时,我正在尝试启动验证,例如

self.click = function()
{
if(errors().length <=0)  
{//post data}
else
{errors.showAllMessages();}
}

// 我试过errors.length,但它失败了,即长度总是zero

如果我在我的文本区域控件中没有任何数据,则使用上面的 if 条件单击按钮,我会收到消息 this field is required 但是当我输入某些内容(自动清除消息)并再次单击意味着我被卡住了,即 @987654328 @ 条件不会触发 if

所以调试和检查,即我可以找到一个空值的索引[0]。这使我的 if 条件失败。

如果我使用多个可观察验证,我会尝试validatedobservable,但由于它是一个单一的,我想通过group 来做。

小提琴附上点击Here

我在这里缺少的任何东西都可以得到帮助。

【问题讨论】:

    标签: validation knockout.js


    【解决方案1】:

    您需要在组中提供数组

    self.errors = ko.validation.group([self.textareadata]);
    

    那就这样用吧

    self.click = function()
    {
        if(self.errors().length == 0)  
        {
            //post data
        }else{
            errors.showAllMessages();
        }
    }
    

    【讨论】:

    • 即使我在 textarea 中输入了一些内容,我也会得到计数。任何的想法 ?但正如我在观察中提到的, index[0] 数据为 null 。
    • 我已经更新了。抱歉我的错误我需要使用这个self.errors.length 而不是self.errors().length。请参阅带有errors 的括号。 Fiddle Link
    • 仍然不能解决我的恐惧。现在总是值是ZERO,它永远不会达到其他条件
    • 据我所知,组需要您未提供的数组。 ko.validation.group([self.textarea]) 使用self.errors().length]Fiddle
    • 哦,我明白了。很高兴你提到它。如果可以,请更新评论的答案,我可以标记它,以便以后有人可以赶上您的答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2014-04-14
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多