首页 文章

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

提问于
浏览
327

有没有一种简单的方法来更改jQuery validation plugin中的默认错误值?

我只是想重写错误消息以使我的应用更加个性化 - 我有很多字段,所以我不想为字段x单独设置消息......我知道我可以做到这一点!

12 回答

  • 32

    您可以在验证调用中指定自己的消息 . 从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")
            }
        }
    }
    

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

  • 6

    这对我有用:

    $.validator.messages.required = 'required';
    
  • 664

    这对我有用:

    // 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.",
                }
            }
        })
    
  • 4

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

    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}.")
    });
    
  • -1

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

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

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

    <form id="form1">
        <input type="text" id="firstName" name="firstName" 
            data-msg="Please enter your first name" />
        
    <input type="text" id="lastName" name="lastName" data-msg="Please enter your last name" />
    <input type="submit" /> </form>

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

    function getMsg(selector) {
        return $(selector).attr('data-msg');
    }
    
    $('#form1').validate({
        // ...
        messages: {
            firstName: getMsg('#firstName'),
            lastName: getMsg('#lastName')
        }
        // ...
    });
    
  • 5

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

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

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

    jQuery.extend(jQuery.validator.messages, {
        required: ...,
        maxlength: jQuery.validator.format(...),
        ...
    });
    
  • 81

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

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

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

  • 40

    最新版本有一些很好的在线内容你可以做 .

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

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

    如果你需要更重的东西,你可以使用一个变量完全自定义东西,其中包含传递给validate函数的所有值 . 请参阅此链接以获取完整详细信息 - https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable

  • 21

    我从没想过这会如此简单,我正在研究一个处理这种验证的项目 .

    以下答案对于想要不费力地更改验证消息的人有很大帮助 .

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

    您可以轻松修改内容

    // 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  
           });  
       });
    
  • 2

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

    $.validator.messages.required = "";
    
  • 208

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

    例如:将字段的类型设置为type ='email'

    然后插件将识别该字段并正确验证 .

相关问题