jQuery验证插件本地化自定义消息

时间:2012-11-02 21:18:10

标签: jquery validation localization

我正在为我的注册表单使用jquery验证插件。 此表单必须以多种语言提供。 我在这里找到了如何本地化默认消息的答案: JQuery Validation Internationalization Problem

但是我无法本地化自定义消息。

我的验证码如下:

registrationForm.validate({
        onkeyup: false,
        errorClass: 'error',
        validClass: 'valid',
        rules: {
            name: { required: true, minlength: 3 },
            email: { required: true, email: true },
            password: { password: "#name" },
            password_confirm: { required: true, equalTo: "#password" }
        },
        messages: {
            password_confirm: {
                required: "Repeat your password",
                minlength: jQuery.format("Enter at least {0} characters"),
                equalTo: "Enter the same password as above"
            }
        }
})

问题在于password_confirm.required消息。

我试过这个:

jQuery.extend(jQuery.validator.messages, {
    required: "Dit is een verplicht veld.",
    remote: "Controleer dit veld.",
    email: "Vul hier een geldig e-mailadres in.",
    url: "Vul hier een geldige URL in.",
    date: "Vul hier een geldige datum in.",
    dateISO: "Vul hier een geldige datum in (ISO-formaat).",
    number: "Vul hier een geldig getal in.",
    digits: "Vul hier alleen getallen in.",
    creditcard: "Vul hier een geldig creditcardnummer in.",
    equalTo: "Vul hier dezelfde waarde in.",
    accept: "Vul hier een waarde in met een geldige extensie.",
    maxlength: jQuery.format("Vul hier maximaal {0} tekens in."),
    minlength: jQuery.format("Vul hier minimaal {0} tekens in."),
    rangelength: jQuery.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),
    range: jQuery.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),
    max: jQuery.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
    min: jQuery.format("Vul hier een waarde in groter dan of gelijk aan {0}."),
    password_confirm: {
                            required: "Herhaal uw wachtwoord",
                            minlength:jQuery.format("Vul hier maximaal {0} tekens in."),
                            equalTo: "Vul hier hetzelfde wachtwoord als hierboven in."
                    }
    }
});

但无济于事。 有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

所以我终于想出了如何做到这一点。 解决方案(或至少我的解决方案)是使用添加规则方法来验证插件。 首先添加默认消息,然后使用国际化插件加载具有自定义国际化消息的文件。

相关代码块,

的index.php:

...
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">$.localise('validation/messages', {language: "<?=$language?>"});</script>
...

的script.js:

$(document).ready(function() {
    var registrationForm = $('form:first');
    registrationForm.validate({
        onkeyup: false,
        errorClass: 'error',
        validClass: 'valid',
        rules: {
            name: { required: true, minlength: 3 },
            email: { required: true, email: true },
            password: { password: "#name" },
        }
     });

    addCustomMessages();
});

消息烯US.js:

function addCustomMessages()
{
   $("#password_confirm").rules("add", {
    required: true,
    equalTo: "#password",
    messages: {
        required: "Repeat your password",
        minlength: jQuery.format("Enter at least {0} characters"),
        equalTo: "Enter the same password as above"
    }
   });
} 

messages-nl-NL.js:

jQuery.extend(jQuery.validator.messages, {
    required: "Dit is een verplicht veld.",
    remote: "Controleer dit veld.",
    email: "Vul hier een geldig e-mailadres in.",
    url: "Vul hier een geldige URL in.",
    date: "Vul hier een geldige datum in.",
    dateISO: "Vul hier een geldige datum in (ISO-formaat).",
    number: "Vul hier een geldig getal in.",
    digits: "Vul hier alleen getallen in.",
    creditcard: "Vul hier een geldig creditcardnummer in.",
    equalTo: "Vul hier dezelfde waarde in.",
    accept: "Vul hier een waarde in met een geldige extensie.",
    maxlength: jQuery.format("Vul hier maximaal {0} tekens in."),
    minlength: jQuery.format("Vul hier minimaal {0} tekens in."),
    rangelength: jQuery.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),
    range: jQuery.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),
    max: jQuery.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
    min: jQuery.format("Vul hier een waarde in groter dan of gelijk aan {0}.")
});

jQuery.extend(jQuery.validator.passwordRating.messages, {
    "similar-to-username": "Lijkt te veel op naam",
    "too-short": "Te kort",
    "very-weak": "Erg zwak",
    "weak": "Zwak",
    "good": "Goed",
    "strong": "Sterk"
});

function addCustomMessages()
{
   $("#password_confirm").rules("add", {
    required: true,
    equalTo: "#password",
    messages: {
        required: "Herhaal uw wachtwoord",
        minlength: jQuery.format("Enter at least {0} characters"),
        equalTo: "Enter the same password as above"
    }
    });
}