1

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

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

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

问题是第一个验证没有被删除,也就是说,它仍然显示为“请输入电子邮件 ID”。即使没有第二次触发该验证及其旁边的第二次验证。

4

1 回答 1

0

该验证代码看起来非常好,但这只是难题的一部分。我建议查看 Backbone.Validation示例(以及它们背后的代码)。这些示例提供了两种不同的方法来处理类似于您的验证规则。

以下是使电子邮件验证在“基本”场景中工作的部分。首先,模板的片段:

  <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>

请注意,电子邮件输入将“内联”指定为数据错误样式。这会影响到主干.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);
}

该代码将错误消息添加到电子邮件元素,或者如果内联错误消息已经存在,则替换错误文本。

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

于 2013-08-16T14:33:27.153 回答