我正在为我的注册表单使用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."
}
}
});
但无济于事。 有人能指出我正确的方向吗?
答案 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"
}
});
}