jquery validate:如何对中文和英文字符的用户名minlength进行不同的验证?

时间:2011-03-06 16:51:05

标签: javascript jquery jquery-validate cjk

我正在使用jQuery.validate插件验证用户注册表单的输入。

我的简单案例工作(确保用户名至少为6个字符)

$('#new_user').validate({
    rules: {
        "user[name]": {
            required: true,
            minlength: 6,
            remote:"/check_name"
        }, ...

我想在上述规则中添加一个警告是允许至少2个汉字或6个常规字符通过长度测试。 (这被认为是中国用户的良好可用性,其中许多人在现实生活中有2-3个汉字名称)

例如,我希望以下名称通过长度测试:

“张三” “迈克尔”

以及以下名称失败(由于太短) “张” “迈克”

如何编写自定义javascript函数来检查这些条件?

2 个答案:

答案 0 :(得分:4)

类似的东西:

  function validate(string) {
    var re = /^[\u3300-\u9fff\uf900-\ufaff]{2,}$/;
    return string.length >= 6 || string.match(re);
  }

  validate("pat")
  validate("patate")
  validate("中")
  validate("中国")

有关详细信息,请参阅Unicode路线图[1]

[1] http://unicode.org/roadmaps/bmp/

答案 1 :(得分:1)

您可以使用i nternationalization plugin以便进行此测试:

function returnMinLength(){
    var browserLanguage = jQuery.i18n.browserLang();
    if (browserLanguage == "zh") // zh stands for chinese (I'm not sure)
       return 2;
    else
       return 6;
}

然后,在你的函数中:

   rules: {
        "user[name]": {
            required: true,
            minlength: returnMinLength(),
            remote:"/check_name"
        }, ...

问候。