在backbone.validation中为单个属性使用验证器数组时出错

时间:2013-08-16 12:17:02

标签: backbone.js backbone-views backbone-events backbone-relational backbone-routing

我正在使用两种不同的消息进行两种不同的验证,例如

validation: {
        email: [{
            required: true,
            msg: 'Please enter Email Id.'
        }, {
            pattern: 'email',
            msg: 'Please enter valid Email id.'
        }]
    }

但是,如果我在没有输入电子邮件值的情况下提交表单,则会触发第一次验证,如果提供错误的输入,则提交表单,触发第二次验证。

问题是第一次验证没有被删除,它仍然显示为“请输入电子邮件ID”。即使第二次没有触发验证,第二次也不会触发验证。

1 个答案:

答案 0 :(得分:0)

验证码看起来非常好,但这只是拼图的一部分。我建议查看Backbone.Validation examples (以及 code behind them )。这些示例提供了两种不同的方法来处理与您类似的验证规则。

以下是让电子邮件验证工作在" Basic"场景。首先,template的片段:

  <div class="control-group">
    <label class="control-label" for="email">Email</label>
    <div class="controls">
      <input type="text" class="input-xlarge" id="email" name="email" data-error-style="inline">
    </div>
  </div>

请注意,电子邮件输入指定&#34;内联&#34;作为数据错误风格。这会从backbone.validation.bootstrap.js开始播放默认的invalid回调:

else if (control.data("error-style") === "inline"){
  if (group.find(".help-inline").length === 0){
    group.find(".controls").append("<span class=\"help-inline error-message\"></span>");
  }
  var target = group.find(".help-inline");
  target.text(error);
}

该代码会向email元素添加错误消息,或者如果内联错误消息已存在,则替换错误文本。

您可以查看更多代码以了解正在进行的操作,但关键是模型验证参数只是故事的一部分。其他部分是模板设置和valid / invalid回调。