覆盖全局验证绑定验证特定输入的选项

时间:2014-10-18 07:22:18

标签: knockout.js knockout-validation

我在脚本初始化时应用了标准验证选项:

ko.validation.configure({
        insertMessages: false,
        decorateInputElement: true,
        errorClass: 'has-error',
        errorElementClass: 'has-error'
    });

这完全正常,但我有一个用户接受复选框,在视图模型无效时应用alert alert-danger类是有意义的。

我尝试应用以下内容并使用本地应用于容器的全局验证选项覆盖(根据Validation Bindings wiki):

<div data-bind="validationOptions: { decorateInputElement: true, errorClass: 'koErrorElement', errorelementclass: 'koErrorElement' }">
    <div class="checkbox" data-bind="validationElement: hasAgreedToTerms">
        <label>
            <input type="checkbox" data-bind="checked: hasAgreedToTerms" /> I agree to terms and conditions
        </label>
    </div>
</div>

但是这不起作用,它只应用原始的has-error类(在init期间设置)并将其应用于checkbox元素(而我希望它包含在包含div.checkbox元素上)我期望产生的输出将是以下html:

<div class="checkbox koErrorElement">
    <label>
        <input type="checkbox" /> I agree to terms and conditions
    </label>
</div>

知道我做错了什么以及为什么不应用错误类?

1 个答案:

答案 0 :(得分:1)

根据configuration's documentation,正确的媒体资源名称为errorElementClass,而不是errorelementclass,因为您在代码中拥有它。

所以你只需要使用选项errorElementClass

的正确框
<div data-bind="validationOptions: { decorateInputElement: true, 
                                     errorElementClass: 'koErrorElement' }">
    <div class="checkbox" data-bind="validationElement: hasAgreedToTerms">
        <label>
            <input type="checkbox" data-bind="checked: hasAgreedToTerms" /> 
            I agree to terms and conditions
        </label>
    </div>
</div>