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

时间:2018-01-30 00:08:41

标签: jquery jquery-validate unobtrusive-validation

我的问题与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.showErrors使输入无效,validator.valid()也会返回true。如何使validator.showErrors使表单无效并显示错误?

3 个答案:

答案 0 :(得分:0)

我认为您无法使用invalidHandler

设置自定义消息

来自docs:

$("#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

答案 1 :(得分:0)

您可以编写自己的逻辑来显示<span> label

中的错误

请在此处查看完整示例。 Fiddle

答案 2 :(得分:0)

  

如果我使用validator.valid()使输入无效,true也会返回validator.showErrors

您无法通过在页面中插入一段文字来“编辑”字段或形成“无效”。

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

  

除了显示错误外,如何让validator.showErrors使表单无效?

你不能!您似乎将手动生成的文本与实际数据验证混淆。当输入的数据不符合您的验证规则时,表单和/或字段将仅“无效”。

如果您只是想以编程方式根据自己的私有条件切换文本消息,那么您就不需要验证插件。

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