2010-03-16 102 views

回答

617

添加该代码在一个单独的文件/脚本包括验证插件后覆盖的消息,编辑在将:)

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}.") 
}); 
+3

这是一件好事。还有另一种方法可以做到吗? – 2010-03-16 18:40:28

+0

@Kevin - 不是真的......你必须至少设置变量,这就是所有这些。您可以在页面中使用另一个'.js',在插件后面运行脚本来设置消息。 – 2010-03-16 18:47:30

+28

工作很好。我刚刚添加了: $ .extend($。validator.messages,{ required:“Required” }); – 2011-07-01 21:28:08

6

而不是改变插件的源代码,你可以包含一个额外的js文件中像在下载本地化文件夹中的格式,并包括一个装载validation.js

jQuery.extend(jQuery.validator.messages, { 
    required: ..., 
    maxlength: jQuery.validator.format(...), 
    ... 
}); 
+0

它不是。它在技术上与你的答案相同。我将我的评论发布到您的答案的旧版本。然后写我自己的答案。所有没有连续重新加载页面。因此,我只在看到您的评论时才看到您编辑的答案。 – jitter 2010-03-16 18:35:58

188

后,您可以在调用validate指定自己的消息。起重和缩写这段代码从记住验证插件文档(http://jquery.bassistance.de/validate/demo/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") 
     } 
    } 
} 

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

+5

感谢您的意见,但如果您仔细阅读问题,我会问如何更改默认设置。我知道我可以指定唯一的消息。 – 2010-12-08 02:27:22

+2

我站好了,对不起。 – Steven 2010-12-16 14:04:14

+36

只是投入 - 这对我有帮助,即使不是针对问题的目标。 – 2011-12-29 19:53:05

21

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

$('.required').each(function(index) { 
    $(this).rules("add", { 
    messages: { 
     required: "Custom error message." 
    } 
    }); 
}); 
+1

这个解决方案正是我正在寻找... ...在我的每个表单字段都有一个标签,所以我找到了相应的标签并在信息前添加了它,所以最后它说“名字是必需的”。非常好,Ganske。 – tjans 2013-01-09 15:10:25

+1

+1虽然所有其他答案都是有效的,这是我正在寻找的语法。 – 2013-03-04 12:53:18

+0

两次!这两个相同的答案帮助了我:D – 2013-05-17 06:00:34

74

这为我工作:

$.validator.messages.required = 'required'; 
+0

$ .validator.messages.maxlength = jQuery.validator.format(“请输入不超过{0}个字符。”);不起作用。我建议使用Nick Cravers解决方案。 – 2014-05-21 11:44:57

+1

@VidarVestnes该解决方案也适用于您的场景。您只需指定格式字符串,然后该插件执行其他操作:'$ .validator.messages.maxlength =“请输入不多于{0}个字符。”;' – rusmus 2014-09-29 11:37:27

+0

$ .validator.messages.maxlength:jQuery.validator。格式(...);将工作... – 2015-07-30 09:09:55

2

要删除所有默认的错误消息使用

$.validator.messages.required = ""; 
5

最新版本有一些不错的在线东西可以做。

如果它是一个简单的输入框,你可以添加属性data-validation-error-msg这样的 -

data-validation-error-msg="Invalid Regex" 

如果你需要的东西重一点,你可以完全自定义,使用可变事情被传递到所有的值验证功能。参考此链接的全部细节 - https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable

+1

这是一个不同于OP询问的jQuery验证插件的插件。这不是一个不错的选择,特别是如果将HTML中的验证相关数据(规则,消息)置于呼吁之列(jQuery验证插件采取相反的方式,所有这些使用Javascript)。为了提供记录的另一种选择,Parsley.js是另一个使用很多且功能全面的验证插件,它依赖于HTML属性。 – 2015-03-20 21:00:36

-1

,而不是这些自定义错误消息,我们可以指定文本字段的类型。

例:字段的设定类型中为type =“电子邮件”

然后插件将识别字段和正确验证。

+0

他并没有要求验证它是否正确,他要求重写消息.... “我只是想重写错误消息,使其更适合我的应用程序” – Benoit 2017-02-21 22:12:00

34

这为我工作:

// 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.", 
      } 
     } 
    }) 
+0

请注意,即使此答案适用于jqueryValidation和不是jqueryFileUpload,'$()。fileupload'函数中还有'messages'选项。 – 2014-10-09 07:26:15

5

@Josh:您可以从资源包

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

扩大与翻译的消息解决方案。如果你把这个代码的一部分到你的_layout。CSHTML(MVC)它,因为我们已经在使用jQuery的适用于所有的意见

28

,我们可以让网页设计师添加自定义消息的标记,而不是代码:

<input ... data-msg-required="my message" ... 

或者更一般使用上的所有字段一个短数据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> 

和代码,然后包含这样的事情:

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

$('#form1').validate({ 
    // ... 
    messages: { 
     firstName: getMsg('#firstName'), 
     lastName: getMsg('#lastName') 
    } 
    // ... 
}); 
+0

这是一个很好的策略,特别是如果您需要一个不在您的js文件中的动态消息集... – 2015-07-01 20:02:26

+0

@ user1207577,是的,我们可以设置自定义消息,但我们如何显示最小长度和最大长度消息。我的意思是如果我们设置自定义,那么最小和最大消息不会显示。任何想法? – 2017-09-10 03:09:03

3

我从来没有想过这会很容易,我正在开发一个项目来处理这种验证。

下面的答案对于想要毫不费力地更改验证消息的人很有帮助。

以下方法使用“占位符名称”代替“此字段”。

您可以轻松地修改的东西

// Jquery Validation 
    $('.js-validation').each(function(){ 

     //Validation Error Messages 

     var validationObjectArray = []; 

     var validationMessages = {}; 

     $(this).find('input,select').each(function(){ // add more type hear 

      var singleElementMessages = {}; 

      var fieldName = $(this).attr('name'); 

      if(!fieldName){ //field Name is not defined continue ; 
       return true; 
      } 


      // If attr data-error-field-name is given give it a priority , and then to placeholder and lastly a simple text 

      var fieldPlaceholderName = $(this).data('error-field-name') || $(this).attr('placeholder') || "This Field"; 

      if($(this).prop('required')){ 

       singleElementMessages['required'] = $(this).data('error-required-message') || $(this).data('error-message') || fieldPlaceholderName + " is required"; 

      } 

      if($(this).attr('type') == 'email'){ 

       singleElementMessages['email'] = $(this).data('error-email-message') || $(this).data('error-message') || "Enter valid email in "+fieldPlaceholderName; 

      }  



      validationMessages[fieldName] = singleElementMessages; 

     }); 


     $(this).validate({ 
      errorClass : "error-message", 
      errorElement : "div", 
      messages  : validationMessages 
     }); 
    });