2

我正在为我的注册表单使用 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."
                    }
    }
});

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

4

1 回答 1

1

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

相关代码块,

索引.php:

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

消息-en-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"
    }
   });
} 

消息-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"
    }
    });
}
于 2012-11-14T19:11:23.017 回答