无法配置淘汰赛验证
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
作为第二个参数传递给init
:ko.validation.init(knockoutValidationSettings, true);
@nemesv - 啊 - 看起来就是解决方案。您能否发布一个答案 - 理想情况下,请简要说明真实的作用?
【参考方案1】:
您调用ko.validation.init
时,验证插件似乎已经初始化。
所以你需要传入true
作为第二个参数来强制初始化使用新的配置:
ko.validation.init(knockoutValidationSettings, true);
什么可以初始化验证插件?
对ko.applyBindings
或ko.applyBindingsWithValidation
的任何呼叫
对ko.validation.init
或ko.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 验证使用)以某种方式解决了我的问题,并且敲除验证按预期工作。
【讨论】:
以上是关于无法配置淘汰赛验证的主要内容,如果未能解决你的问题,请参考以下文章