有没有办法在Knockout验证模板中检查是否需要?

时间:2013-10-18 16:47:06

标签: knockout.js knockout-validation

我正在使用敲除验证来验证我的视图模型,并使用自定义模板在字段旁边放置确认或错误消息。问题是正在将确认消息添加到未标记为必需的字段。在模板中它检查isModified和isValid,但有没有办法检查该字段是否必需,所以我只能在必填字段上显示确认信息?

http://jsfiddle.net/uSs3R/

<script type="text/html" id="myCustomTemplate">
    <span data-bind="if: field.isModified() && !field.isValid(), 
                     attr: { title: field.error }"><i class="icon-exclamation-sign"></i></span>
    <span data-bind="if: field.isModified() && field.isValid()"><i class="icon-ok green"></i></span>
</script>

1 个答案:

答案 0 :(得分:1)

这个问题有多种解决方案:

调用ko.validation.group

时,请勿包含可能不可验证的属性

所以不要写:

self.errors = ko.validation.group(self);

只列出要验证的属性:

self.errors = ko.validation.group([self.Value2]);

或者,您可以在自定义消息模板中添加其他检查,以查找field.rules并检查其是否包含任何规则:

<script type="text/html" id="myCustomTemplate">
    <span data-bind="if: field.rules().length > 0 && field.isModified() &&      
                      !field.isValid(), attr: { title: field.error }">
           <i class="icon-exclamation-sign"></i>
     </span>
     <span data-bind="if: field.rules().length > 0 && field.isModified() && 
                      field.isValid()">
           <i class="icon-ok green"></i>
     </span>
</script>

演示JSFiddle

相关问题