2012-11-02 33 views
1

我为我的注册表单使用jQuery验证插件。 此表格必须有多种语言版本。 我已经找到答案如何本地化默认消息在这里: JQuery Validation Internationalization ProblemjQuery验证插件本地化自定义消息

但我在我的自定义消息本地化时遇到问题。

我的验证代码如下:

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

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

相关的代码块,

的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" 
    } 
    }); 
} 

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