Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryvalidate:如何对中文和英文字符的用户名最小长度进行不同的验证?_Javascript_Jquery_Jquery Validate_Cjk - Fatal编程技术网

Javascript jqueryvalidate:如何对中文和英文字符的用户名最小长度进行不同的验证?

Javascript jqueryvalidate:如何对中文和英文字符的用户名最小长度进行不同的验证?,javascript,jquery,jquery-validate,cjk,Javascript,Jquery,Jquery Validate,Cjk,我正在使用jQuery.validate插件来验证用户注册表的输入 我已经完成了简单的案例(确保用户名至少为6个字符) 我想对上述规则添加一个警告,即允许至少2个汉字或6个常规字符通过长度测试。(这对于中国用户来说是很好的可用性,他们中的许多人在现实生活中有2-3个汉字名称) 例如,我希望以下名称通过长度测试: "张三" “迈克尔” 和以下名称失败(由于太短) "张" “迈克” 如何编写自定义javascript函数来检查这些条件?您可以使用i来执行此测试: function returnMin

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

我已经完成了简单的案例(确保用户名至少为6个字符)

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

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

"张三" “迈克尔”

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

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

您可以使用i来执行此测试:

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"
        }, ...
问候。

类似于:

  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]

比如“Lee,“少于六个字符?相信你的用户正确输入他们的名字,并检查他们没有留下一个空白字段,怎么样?哦,我想很多中国人都有一个1个字符的名字。@David Thomas说得很好。我注意到大多数注册表单的minlength设置为至少4-6,这让我觉得允许使用诸如“aa”之类的名称是不好的形式,但你的问题确实让我在用户体验设计上三思。谢谢。其他语言可以使用中文字符(如日语),可能需要两个字符的名称。中国人可能会使用英语浏览器(例如)。除此之外,我同意大卫·托马的观点。如果你真的想这样做(同样,这看起来不是一个很好的主意),你应该检查字符。好的。检查输入是否为中文(它在一系列unicodes上进行测试):不理解脚本。为什么有两个Regexp而不是只有一个?为什么有一个范围,如果“私人用户区”?我想说:^[\u3300-\u9fff\uf900-\ufaff]*$你可能想包括平假名/片假名(如果你想包括日语)和韩语(韩语)。谢谢你的回答!自定义检查功能,而不是动态计算minlength:更适合我的特定场景。谢谢,这(几乎)正是我想要的。理想情况下,正则表达式也会排除奇怪的字符(并且只允许字母、数字和汉字,而不允许空格或类似的奇怪符号)@#$@
  function validate(string) {
    var re = /^[\u3300-\u9fff\uf900-\ufaff]{2,}$/;
    return string.length >= 6 || string.match(re);
  }

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