有很多教程,例如here和official 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
属性的问题。在将其设置为所有不同的用户注册表单后,它们也正常工作。
答案 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);