it-roy-ru.com

Как изменить сообщение о языке JQuery Validator

Я использую JQuery Validator из http://bassistance.de/jquery-plugins/jquery-plugin-validation/ . Как сделать так, чтобы сообщения были на заказ, а не на английском.

19
Luis Alvarado

Сделай это так:

$(document).ready(function() {
  $("form#login").validate({
    lang: 'en'  // or whatever language option you have.
  });
});

Если язык, который вы хотите указать, не является языком по умолчанию, сделайте следующее:

$.tools.validator.localize("fi", {
    '*'          : 'Virheellinen arvo',
    ':email'     : 'Virheellinen sähköpostiosoite',
    ':number'    : 'Arvon on oltava numeerinen',
    ':url'       : 'Virheellinen URL',
    '[max]'      : 'Arvon on oltava pienempi, kuin $1',
    '[min]'      : 'Arvon on oltava suurempi, kuin $1',
    '[required]' : 'Kentän arvo on annettava'
});

  $("form#login").validate({
    lang: 'fi'
  });

Смотрите эти инструкции для более.

16
Dave Sag

Если вы загляните в каталог «локализация», вы можете найти разные файлы .js, которые содержат сообщения об ошибках на разных языках . [Что-то вроде «messages_XX.js»]

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

<script type="text/javascript" src="localization/messages_XX.js"></script>
31
andre_lost

Лучший способ - расширить плагин таким образом, когда это необходимо.

$.extend($.validator.messages, {
    required: "my required message",
    ....
});
6
astroanu

Вот ваша структура JSON в вашем начальном сценарии проверки, как у Алекса

   rules: {
        accntTypeCL: {
            required: true,
        },
        accntNoCL: {
            required: true,
            minlength: 19,
            numberDash: true,
        }
    },                      
    messages : {
        accntTypeCL : {
            required : Messages.ERR_TEST,
        },
        accntNoCL : {
            required : Messages.ERR_TEST,
            numberDash : Messages.ERR_TEST,
            minlength : Messages.ERR_TEST2,
        },
    }

//This would be in your messages.js file... But you'll need to make sure you are using a Java backend or something that will pull the messages.js correctly
//For IBM worklight this worked great       

    Messages = {
// Add here your messages for the default language. 
// Generate a similar file with a language suffix containing the translated messages

ERR_TOPLEVEL : '<span role=\"presentation\">One or more of the required fields was left blank or is invalid.<\/span>',
//Test Messages for tracing
ERR_TEST: 'This be the test yar!',
ERR_TEST2: 'This be the test2 yar!'
};

Таким образом, вы можете повторно использовать те же функции, те же дополнительные методы и те же типы ошибок и просто использовать правильный файл messages.js, основанный на языке html, который должен быть обнаружен в браузере, или если он у вас есть. Этот конкретный метод работал хорошо для меня. 

5
isaac weathers

Взгляните на мое решение 

jQuery.extend(jQuery.validator.messages, {
        required: abp.localization.localize("FormValidationMessageRequired"),//"This field is required.",
        remote: "Please fix this field.",
        email: abp.localization.localize("FormValidationMessageEmail"),//"Please enter a valid email address.",
        url: abp.localization.localize("FormValidationMessageUrl"),//"Please enter a valid URL.",
        date: abp.localization.localize("FormValidationMessageDate"),//"Please enter a valid date.",
        dateISO: "Please enter a valid date (ISO).",
        number:  abp.localization.localize("FormValidationMessageNumber"),//"Please enter a valid number.",
        digits: "Please enter only digits.",
        creditcard: "Please enter a valid credit card number.",
        equalTo:  abp.localization.localize("FormValidationMessageDataEquals"),//"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(abp.localization.localize("FormValidationMessageMinlength")),//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(abp.localization.localize("FormValidationMessageMax")),//jQuery.validator.format("Please enter a value less than or equal to {0}."),
        min: jQuery.validator.format(abp.localization.localize("FormValidationMessageMin"))//jQuery.validator.format("Please enter a value greater than or equal to {0}.")
    });

и эта функция abp.localization.localize(Key) возвращает локализованную строку, основанную на текущей культуре, эта функция из используемой мною среды называется aspnetboilerplate

для получения дополнительной информации см. этот поток переполнения стека Проверка JQuery: изменить сообщение об ошибке по умолчанию

3
Basheer AL-MOMANI

Используйте объект messages.

Пары ключ/значение, определяющие пользовательские Сообщения. Ключ - это имя элемент, значение сообщения для отображения для этого элемента. Вместо равнины сообщение другой карте с указанием сообщения для каждого правила могут быть использованы . Переопределяет атрибут заголовка элемент или сообщение по умолчанию для метод (в таком порядке). Каждое сообщение может быть строкой или обратным вызовом. обратный вызов вызывается в рамках валидатор и с правилом параметры как первый и Элемент, как второй arugment, это должен возвращать строку для отображения как сообщение.

Пример

$(".selector").validate({
   rules: {
     name: "required",
     email: {
       required: true,
       email: true
     }
   },
   messages: {
     name: "Please specify your name",
     email: {
       required: "We need your email address to contact you",
       email: "Your email address must be in the format of [email protected]"
     }
   }
})

Источник .

1
alex

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

<input required data-msg="Please fill this field">
<input data-rule-minlength="2" data-rule-maxlength="4" data-msg-minlength="At least two chars" data-msg-maxlength="At most fours chars">

Смотрите документация

Если вы используете какой-то плагин локализации, вы можете перемещать сообщения в отдельные файлы. Здесь я использую i18n-2 (модуль npm):

<input id="email" type="email" name="email" data-msg=__("pages.apply.form.email.errormsg.required"))

Затем я помещаю свои языковые файлы в папку:

/locales
    da.json
    en.json

en.json

"pages": {
        "apply": {
            "subtitle": "Apply here",
            "form": {
                    "email": {
                        "title": "Email",
                        "placeholder": "Your email address",
                        "warning": "NB! DER AFSENDES EN MAIL HERTIL",
                        "errormsg": {
                            "required": "Enter a valid email address"
                        }
                    }
             }
        }
 }
1
olefrank