无法配置淘汰赛验证

Posted

技术标签:

【中文标题】无法配置淘汰赛验证【英文标题】:Can't configure knockout validation 【发布时间】:2014-02-24 16:08:39 【问题描述】:

我正在尝试配置淘汰赛验证,但我的设置似乎被忽略了。这就是我尝试配置它的方式

var knockoutValidationSettings = 
    insertMessages: true,
    decorateElement: true,
    errorMessageClass: 'error',
    errorElementClass: 'error',
    errorClass: 'error',
    errorsAsTitle: true,
    parseInputAttributes: false,
    messagesOnModified: true,
    decorateElementOnModified: true,
    decorateInputElement: true
;
ko.validation.init(knockoutValidationSettings);

ko.applyBindings(vm, $('#dropzone')[0]);

我知道选项对象不是问题,因为它完美地工作

var knockoutValidationSettings = 
    insertMessages: true,
    decorateElement: true,
    errorMessageClass: 'error',
    errorElementClass: 'error',
    errorClass: 'error',
    errorsAsTitle: true,
    parseInputAttributes: false,
    messagesOnModified: true,
    decorateElementOnModified: true,
    decorateInputElement: true
;
//ko.validation.init(knockoutValidationSettings);

ko.applyBindingsWithValidation(vm, $('#dropzone')[0], knockoutValidationSettings);

如何让 init 函数工作?显然,我想将此初始化移动到我的应用程序根目录的一个位置。

【问题讨论】:

您可以尝试将true 作为第二个参数传递给initko.validation.init(knockoutValidationSettings, true); @nemesv - 啊 - 看起来就是解决方案。您能否发布一个答案 - 理想情况下,请简要说明真实的作用? 【参考方案1】:

您调用ko.validation.init时,验证插件似乎已经初始化。

所以你需要传入true作为第二个参数来强制初始化使用新的配置:

ko.validation.init(knockoutValidationSettings, true);

什么可以初始化验证插件?

ko.applyBindingsko.applyBindingsWithValidation 的任何呼叫 对ko.validation.initko.validation.configure 的任何呼叫

ko.applyBindingsWithValidation 版本有效,因为它会更新配置 - 在幕后 - 即使插件已经初始化。

【讨论】:

btw - 我将 init 调用移至所有 applyBindings 之前,它运行良好(没有 true 标志)。再次感谢。【参考方案2】:

由于配置错误,我遇到了这个问题。为了模仿我们当前的行为,我将 errorMessageClass 属性设置为“field-validation-valid ui top pointing red basic label”。

事实证明,删除“field-validation-valid”类(由 ASP.NET MVC ClientSide / jQuery 验证使用)以某种方式解决了我的问题,并且敲除验证按预期工作。

【讨论】:

以上是关于无法配置淘汰赛验证的主要内容,如果未能解决你的问题,请参考以下文章

淘汰赛映射验证

淘汰赛验证失败

Knockout 验证不适用于 Kendo 文本编辑器

带油门的淘汰赛验证

淘汰赛验证:动态约束

淘汰赛验证多个自定义异步规则