Проверка JQuery: изменить сообщение об ошибке по умолчанию - PullRequest
341 голосов
/ 16 марта 2010

Есть ли простой способ изменить значения ошибок по умолчанию в плагине проверки jQuery ?

Я просто хочу переписать сообщения об ошибках, чтобы они были более личными для моего приложения - у меня много полей, поэтому я не хочу устанавливать сообщение отдельно для поля x ... Я знаю, что могу это сделать !

Ответы [ 13 ]

697 голосов
/ 16 марта 2010

Добавьте этот код в отдельный файл / скрипт, включенный после плагин проверки для переопределения сообщений, редактируйте по желанию:)

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}.")
});
217 голосов
/ 08 декабря 2010

Вы можете указать свои собственные сообщения в проверочном звонке. Снятие и сокращение этого кода с формы регистрации «Помни о молоке», используемой в документации плагина проверки (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

83 голосов
/ 16 апреля 2012

Это сработало для меня:

$.validator.messages.required = 'required';
45 голосов
/ 12 марта 2013

Это сработало для меня:

// 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.",
            }
        }
    })
35 голосов
/ 28 февраля 2015

Поскольку мы уже используем JQuery, мы можем позволить дизайнерам страниц добавлять собственные сообщения в разметку, а не код:

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

Или более общее решение, использующее один короткий атрибут 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>

И код содержит что-то вроде этого:

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

$('#form1').validate({
    // ...
    messages: {
        firstName: getMsg('#firstName'),
        lastName: getMsg('#lastName')
    }
    // ...
});
21 голосов
/ 30 марта 2011

Другое возможное решение состоит в том, чтобы зациклить поля, добавив одно и то же сообщение об ошибке в каждое поле.

$('.required').each(function(index) {
  $(this).rules("add", {
    messages: {
      required: "Custom error message."
   }
  });
});
6 голосов
/ 16 марта 2010

Вместо изменения исходного кода плагина вы можете включить дополнительный файл js в формате, подобном файлам в папке локализации загрузок, и включить его после загрузки validation.js

jQuery.extend(jQuery.validator.messages, {
    required: ...,
    maxlength: jQuery.validator.format(...),
    ...
});
5 голосов
/ 30 сентября 2013

@ Джош: Вы можете расширить свое решение с помощью переведенного сообщения из пакета ресурсов

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

Если вы поместите эту часть кода в _Layout.cshtml (MVC), она будет доступна для всех ваших просмотров

3 голосов
/ 24 ноября 2015

Я никогда не думал, что это будет так просто, я работал над проектом, чтобы справиться с такой проверкой.

Приведенный ниже ответ окажет большую помощь тому, кто хочет изменить сообщение проверки без особых усилий.

Приведенные ниже подходы используют «Имя заполнителя» вместо «Это поле».

Вы можете легко изменить вещи

   // 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  
       });  
   });  
3 голосов
/ 16 декабря 2012

В новой версии есть несколько полезных вещей, которые вы можете сделать.

Если это простое поле ввода, вы можете добавить атрибут data-validation-error-msg вот так -

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

Если вам нужно что-то более тяжелое, вы можете полностью настроить вещи, используя переменную со всеми значениями, которые передаются в функцию validate. Ссылка на эту ссылку для получения полной информации - https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...