我正在尝试配置淘汰赛验证,但我的设置似乎被忽略了。这就是我试图配置它的方式
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功能起作用?显然,我想把这个初始化移到我应用程序根目录的一个地方。
答案 0 :(得分:14)
似乎验证插件已在您拨打ko.validation.init
时初始化。
所以你需要传入true
作为第二个参数来强制初始化使用新的配置:
ko.validation.init(knockoutValidationSettings, true);
什么可以初始化验证插件?
ko.applyBindings
或ko.applyBindingsWithValidation
ko.validation.init
或ko.validation.configure
ko.applyBindingsWithValidation
版本可以正常运行,因为它会更新配置 - 即使插件已经初始化也是如此。
答案 1 :(得分:0)
由于配置错误,我遇到了这个问题。为了模仿我们当前的行为,我已将 errorMessageClass 属性设置为“ field-validation-valid ui top指向红色基本标签”。
原来,删除“ field-validation-valid ”类(由ASP.NET MVC ClientSide / jQuery验证使用)以某种方式解决了我的问题,敲除验证按预期进行了。