1

使用knockout.js(和knockout-validation)我有这个:

self.nickname = ko.observable("").extend({
    required: true,
    minLength: 3
});

<input type="text" data-bind="value: nickname" class="short" maxlength="30" />
<div class="formRow rowErrorMsg" data-bind="visible: nickname.isValid() == false"><span class="staticImages staticImagesError"></span> <?php text("Enter a valid username") ?></div>

但问题是,当“昵称”无效时,会在输入控件旁边显示一个文本。带有错误消息的 DIV 开始可见,然后工作正常。

我需要这样做:

  1. 当“昵称”无效时,只需使用我的自定义消息和格式显示 DIV。
  2. 加载页面时,DIV 必须保持隐藏状态。
4

1 回答 1

11

您需要配置敲除验证以不显示错误消息。有两种方法。

第一种是通过绑定:

<div data-bind='validationOptions: { insertMessages: false }'>
    <input type="text" data-bind="value: nickname" class="short" maxlength="30" />
    <div class="formRow rowErrorMsg" data-bind="visible: nickname.isValid() == false">
</div>

第二个是通过代码:

  • 使用ko.validation.init({ insertMessages: false });功能
  • 使用ko.applyBindingsWithValidation(viewModel, rootNode, { insertMessages: false });函数**contextual

可以在以下位置找到所有配置选项的描述:https ://github.com/ericmbarnard/Knockout-Validation/wiki/Configuration

如果您有许多必须验证的字段,则可以使用 messageTemplate 模板,而不是手动创建所有 errorMessage div。

于 2013-01-30T06:28:05.063 回答