2

登録フォームにjquery検証プラグインを使用しています。このフォームは複数の言語で利用できる必要があります。デフォルトのメッセージをローカライズする方法の答えをここで見つけました: JQuery検証の国際化の問題

しかし、カスタムメッセージのローカライズに問題があります。

私の検証コードは次のとおりです。

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

それで私はついにこれを行う方法を理解しました。解決策(または少なくとも私の解決策)は、検証プラグインにルールの追加メソッドを使用することでした。最初にすべてのデフォルトメッセージを追加し、次に国際化プラグインを使用して、カスタムの国際化メッセージを含むファイルをロードします。

関連するコードブロック、

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();
});

messages-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 に答える