需要覆盖的jQuery验证消息无法按预期工作

时间:2016-10-13 14:25:49

标签: jquery validation drupal-7

有很多教程,例如hereofficial jQuery Validate docs。但他们不再工作以覆盖所需的消息。

所以这个不会覆盖所需的消息。但无论如何,那里的所有教程都说它应该以这种方式工作:

$('#my-form').validate({
        rules: {
          mail: "required",
        },
        messages: {
          mail: {
            required: "Give an email in!",
          },
        }
  });

如果我这样做:

$('#my-form').validate({
        rules: {
          mail: "required",
        },
        messages: {
          mail: "Give an email in!",
        }
      });

它有效。它确实覆盖了通常的#34;现场电子邮件是必需的"。但现在我无法设置任何其他消息。所以这没用!

那么现在怎么可能覆盖所需的文本呢?

我使用 Drupal 7.51 Clientside Validation 7.x-1.42 jQuery 1.10.2

无论如何都正确地强制其他消息

因此,当我接收电子邮件而不是必需时,它正确地将其删除。那么我会假设所需的消息是什么?你对此有何看法:

   $('#my-form').validate({
            rules: {
              mail: "email",
            },
            messages: {
              mail: {
                email: "Invalid email",
          },
            }
   });

除必要的

外,全局设置消息也有效

适用于电子邮件,但不是必需的:

jQuery.extend(jQuery.validator.messages, {
  required: "required...",
  email: "email...",
});

可能的解决方法(但没有解决方案)

提示:我遇到了其他形式无法正常工作的问题。但这只是在PHP中设置#required属性的问题。在将其设置为所有不同的用户注册表单后,它们也正常工作。

2 个答案:

答案 0 :(得分:1)

您可以随时执行以下操作:

(function(Drupal, $) {
  Drupal.behaviors.myModuleBehavior = {
    attach: function() {
      $(document).bind('clientsideValidationInitialized', function() {
        var validator = Drupal.myClientsideValidation.validators['my-form'];
        if (typeof validator.settings.messages.mail === 'undefined') {
          validator.settings.messages.mail = {};
        }
        validator.settings.messages.mail.required = 'My custom message for the "required" rule for the input with name "mail".';
      });
    }
  };
})(Drupal, jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.js"></script>
<form id="my-form">
  <input name="mail" type="mail" required="required" />
  <input type="submit" value="Submit" />
</form>

哪个应该可以正常工作。

编辑:我更新了脚本以使用Clientside Validation Drupal模块。它在完成所有处理后触发clientsideValidationInitialized事件。

答案 1 :(得分:0)

只需通过字段ID更改消息

(function(Drupal, $) {
    Drupal.behaviors.mymodBehavior = {
      attach: function(){
        jQuery('#field_id').rules("add", {
            messages: {
              required: "Custom validation message"
           }
          });
      }
    }
  }
  )(Drupal,jQuery);