无法配置淘汰验证

时间:2014-01-31 19:59:28

标签: javascript knockout.js knockout-validation

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

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功能起作用?显然,我想把这个初始化移到我应用程序根目录的一个地方。

2 个答案:

答案 0 :(得分:14)

似乎验证插件已在您拨打ko.validation.init时初始化。

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

ko.validation.init(knockoutValidationSettings, true);

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

  • ko.applyBindingsko.applyBindingsWithValidation
  • 的任何来电
  • ko.validation.initko.validation.configure
  • 的任何来电

ko.applyBindingsWithValidation版本可以正常运行,因为它会更新配置 - 即使插件已经初始化也是如此。

答案 1 :(得分:0)

由于配置错误,我遇到了这个问题。为了模仿我们当前的行为,我已将 errorMessageClass 属性设置为“ field-validation-valid ui top指向红色基本标签”。

原来,删除“ field-validation-valid ”类(由ASP.NET MVC ClientSide / jQuery验证使用)以某种方式解决了我的问题,敲除验证按预期进行了。