jQuery验证:更改默认错误消息

Kev*_*own 348 jquery jquery-validate

有没有一种简单的方法来更改jQuery验证插件中的默认错误值?

我只想重写错误信息,以便更贴近我的应用程序 - 我有很多字段,所以我不想为字段x单独设置消息......我知道我可以做到!

Nic*_*ver 715

在验证插件之后包含的单独文件/脚本中添加此代码以覆盖消息,随意编辑:)

jQuery.extend(jQuery.validator.messages, {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date (ISO).",
    number: "Please enter a valid number.",
    digits: "Please enter only digits.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    accept: "Please enter a value with a valid extension.",
    maxlength: jQuery.validator.format("Please enter no more than {0} characters."),
    minlength: jQuery.validator.format("Please enter at least {0} characters."),
    rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."),
    range: jQuery.validator.format("Please enter a value between {0} and {1}."),
    max: jQuery.validator.format("Please enter a value less than or equal to {0}."),
    min: jQuery.validator.format("Please enter a value greater than or equal to {0}.")
});
Run Code Online (Sandbox Code Playgroud)

  • 工作得很好.我刚刚添加:$ .extend($.validator.messages,{required:"Required"}); (31认同)
  • 我使用它作为多语言形式的快速修复:if($('body').attr('lang')=="es"){jQuery.extend ...}; (6认同)
  • @NickCraver,只是想说我从没想过要用这个问题产生这么多的赞成...并且做得好及时快速回答! (5认同)
  • 不开心抱歉.没有显示消息,虽然我使用了minlength,但只显示了所需的消息. (3认同)
  • 在 [github](https://github.com/jquery-validation/jquery-validation/tree/master/src/localization) 上查看所有翻译密钥 (2认同)
  • 我们可以在错误消息中包含表单元素名称吗?而不是只有一般信息。即_登录字段是必需的_而不是_此字段是必需的_ (2认同)

Ste*_*ven 225

您可以在验证调用中指定自己的消息.从Validation插件文档(http://jquery.bassistance.de/validate/demo/milk/)中使用的Remember the Milk注册表单中提取和缩写此代码,您可以轻松指定自己的消息:

var validator = $("#signupform").validate({
    rules: {
        firstname: "required",
        lastname: "required",
        username: {
            required: true,
            minlength: 2,
            remote: "users.php"
        }
    },
    messages: {
        firstname: "Enter your firstname",
        lastname: "Enter your lastname",
        username: {
            required: "Enter a username",
            minlength: jQuery.format("Enter at least {0} characters"),
            remote: jQuery.format("{0} is already in use")
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

完整的验证API(...):http://jqueryvalidation.org/validate

  • 只是投球 - 这对我有帮助,即使不是针对这个问题的目标. (41认同)
  • 感谢您的输入,但如果您更仔细地阅读问题,我会问如何更改默认值.我知道我可以指定唯一的消息. (6认同)
  • @LisaCerilli 我也有同样的问题,通过将 `jQuery.format("...` 更改为 `jQuery.validator.format("...` (2认同)

Jos*_*osh 83

这对我有用:

$.validator.messages.required = 'required';
Run Code Online (Sandbox Code Playgroud)


小智 46

这对我有用:

// Change default JQuery validation Messages.
$("#addnewcadidateform").validate({
        rules: {
            firstname: "required",
            lastname: "required",
            email: "required email",
        },
        messages: {
            firstname: "Enter your First Name",
            lastname: "Enter your Last Name",
            email: {
                required: "Enter your Email",
                email: "Please enter a valid email address.",
            }
        }
    })
Run Code Online (Sandbox Code Playgroud)


use*_*577 37

由于我们已经在使用JQuery,我们可以让页面设计者将自定义消息添加到标记而不是代码:

<input ... data-msg-required="my message" ...
Run Code Online (Sandbox Code Playgroud)

或者,在所有字段上使用单个short data-msg属性的更通用的解决方案:

<form id="form1">
    <input type="text" id="firstName" name="firstName" 
        data-msg="Please enter your first name" />
    <br />
    <input type="text" id="lastName" name="lastName" 
        data-msg="Please enter your last name" />
    <br />
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

然后代码包含这样的内容:

function getMsg(selector) {
    return $(selector).attr('data-msg');
}

$('#form1').validate({
    // ...
    messages: {
        firstName: getMsg('#firstName'),
        lastName: getMsg('#lastName')
    }
    // ...
});
Run Code Online (Sandbox Code Playgroud)


Gan*_*ske 21

另一种可能的解决方案是遍历字段,向每个字段添加相同的错误消息.

$('.required').each(function(index) {
  $(this).rules("add", {
    messages: {
      required: "Custom error message."
   }
  });
});
Run Code Online (Sandbox Code Playgroud)

  • +1虽然所有其他答案都是有效的,但这就是我正在寻找的语法。 (2认同)

jit*_*ter 6

您可以在下载本地化文件夹中包含一个额外的js文件,而不是更改插件源代码,并在加载validation.js后包含该文件.

jQuery.extend(jQuery.validator.messages, {
    required: ...,
    maxlength: jQuery.validator.format(...),
    ...
});
Run Code Online (Sandbox Code Playgroud)


小智 5

@Josh:您可以使用资源包中的已翻译消息扩展您的解决方案

<script type="text/javascript">
    $.validator.messages.number = '@Html.Raw(@Resources.General.ErrorMessageNotANumber)';
</script>
Run Code Online (Sandbox Code Playgroud)

如果您将此代码部分放入_Layout.cshtml(MVC)中,则它可用于您的所有视图