Jquery 验证 ShowErrors 方法在 Label 而不是 Span 中显示错误

Jquery Validation ShowErrors method shows error in a Label instead of Span

我的问题与this

有些相关

这是一个 JsFiddle Link 看看发生了什么我正在使用 jquery 验证版本 1.14.0。

<Form id="myform">
        <div class="editor-label">
          <label for="FirstName">First name</label>
        </div>
        <div class="editor-field">
          <input class="text-box single-line" id="FirstName" name="FirstName" type="text" value="">
          <span class="field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="true"></span>
 </Form>

 var form= $("#myForm");
  var validator=$("#myform").validate();
  validator.showErrors({
        "FirstName": "test error"
    });

还有validator.valid() returns true 如果我使用validator.showErrors 使输入invalid.How 我可以让validator.showErrors 使表单无效吗显示错误?

我想您不能使用 invalidHandler

设置自定义消息

来自文档:

$("#myform").validate({
  invalidHandler: function(event, validator) {
    // 'this' refers to the form
    var errors = validator.numberOfInvalids();
    if (errors) {
      var message = errors == 1
        ? 'You missed 1 field. It has been highlighted'
        : 'You missed ' + errors + ' fields. They have been highlighted';
      $("div.error span").html(message);
      $("div.error").show();
    } else {
      $("div.error").hide();
    }
  }
});

Link to Docs

您可以编写自己的逻辑来在 <span> 而不是 label

中显示错误

完整示例请参见此处。 Fiddle

Also validator.valid() returns true if I use validator.showErrors to make the input invalid.

您不能通过在页面中插入一段文本来以编程方式 "make" 字段或表单 "invalid"。

Valid/Invalid 状态仅基于字段的输入值与声明的验证规则的比较。 这就是为什么 .valid() 不起作用的原因你期望的;它根据您的验证规则正确确定有效性,而不是是否存在任意消息。

How can I make validator.showErrors make the form invalid in addition to showing the errors?

你不能!您似乎将手动生成的一段文本与实际数据验证混淆了。当输入的数据不符合您的验证规则时,表单 and/or 字段只会 "invalid"。

如果您只是想根据自己的私人标准以编程方式切换文本消息,则不需要验证插件。

另一方面,为什么不 create a custom validation rule 无论您想做什么,让插件正确处理验证消息。