【问题标题】:Issue with validation in knockout js淘汰赛js中的验证问题
【发布时间】:2014-10-13 18:53:29
【问题描述】:

我在名称输入字段字段上进行了验证,当您单击 addFields 时,您可以看到它。我遇到验证消息在单击添加分支按钮之前出现的问题,因为在 addFields 函数中,我将名称的值设置为空,因为如果我不这样做单击编辑并进行更改,然后单击添加或取消,然后单击添加字段,然后它会在输入字段中显示以前的值。我想在单击添加分支时显示验证消息,并希望在单击 addFields 时输入字段为空,并在单击编辑时显示值。我怎样才能一起实现这些场景?

这是链接

 `http://jsfiddle.net/sohimohit/43zkoszu/13/` 

【问题讨论】:

  • 当你初始化 name 属性 (self.name("")) 时,你必须告诉 Knockoutvalidation 它没有改变。尝试添加 self.name.isModified(false);将值更改为空字符串后。

标签: validation knockout.js knockout-validation


【解决方案1】:

你可以在你的错误对象上使用showAllMessages(false)

http://jsfiddle.net/43zkoszu/16/

尽管我必须说你这样做的方法有点奇怪。通常使用 MVVM,你有一个单独的模型,每次你想注册一个新模型时都会创建一个新模型

【讨论】:

  • 是的 Andres,你是对的,但是当我单击编辑并更新它时,我必须显示网格的当前值,这就是为什么我必须创建这么多代码而且我是淘汰赛的新手,所以不要对此了解不多。你能指导我什么是正确的方法,这样我就可以减少我的代码行,请详细解释
【解决方案2】:

正如@Marius 已经说过的,您需要使用 isModifed(false) 来更改字段。所以,你的代码应该是这样的

self.AddField = function(){ 
        self.BranchId("");
        self.BranchId.isModified(false);

        self.name("");
        self.name.isModified(false);

        self.description("");
        self.description.isModified(false);

        // .... etc ..

        self.show(false);
        self.show.isModified(false);
        self.showFields(true);
        self.showFields.isModified(false);
    }

另外,请注意您的 AddField 代码中有逗号 (,) 而不是分号 (;)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2013-11-07
    • 2013-03-22
    • 2011-08-09
    • 2014-10-13
    相关资源
    最近更新 更多