使用Jquery validate时写的一些东西,在这里做个笔记

在使用 Jquery validate 的minlength和maxlength进行文本框内容长度验证的时候,对于一个汉字的长度检测结果是1个字符长度,

在这里我想让一个汉字的长度为2个字符长度,下面记录一下实现方法。

首先我们定义一个需求,比如下面文本框,我们想让输入的用户名长度不能超过10个字符(一个汉字为两个字符长度)。

用户名:<input type="text" name="username" id="username ">

然后自定义校验规则,代码如下:

 1 /* 自定义验证规则,内容的最大长度,一个汉字等于两个字符 */
2 $.validator.addMethod("stringMaxLength",function(value,element,params){
3 var length = value.length;
4 for( var i = 0; i < value.length; i++ ) {
5 if( value.charCodeAt(i) > 19967 ) {
6 length++;
7 }
8 }
9 return length>params[0]?false:true;
10 },"最大长度不能超过{0}个字符,一个汉字为两个字符")

上面代码大体结构是这样的:

$.validator.addMethod(rulesName,function,msg)

rulesName:规则的名称,这里是stringMaxLength(自己定义的)

function:是规则的具体实现函数,下面会具体介绍这个函数以及它的三个参数,这里是function(value,element,params)

msg:该规则的校验错误信息,这里是:“最大长度不能超过{0}个字符,一个汉字为两个字符“,这个{0},是什么意思呢?往下看。

1 function(value,element,params) {
2 //这里写校验的具体实现
4 }

它有三个固定参数,value,element,params  (固定参数,固定参数,固定参数,重要的事情说三遍!!!敲黑板了)

结合我们上面的需求,三个参数的含义如下:

value:是我们在文本框中输入的内容,即校验的目标

element:是校验的元素,input这个元素,这里用不到该元素的值(胸弟!忽略它)

params:校验参数(我自己取得名字,哈哈……嗝,我没有具体去查官方的称

它是一个数组,内容是我们设置校验规则时传入的参数,这里我们应该传入参数为10(内容最大长度为10),所以params[0]就是10。

现在回答上面遗留的一问题,就是{0},他在这里其实代表的就是params[0],回答完毕。参数具体怎么传进来,下面就是了。

假设我们上面需求中的文本框所在的form表单的id为login, 检验的具体实现

$.validator.addMethod("stringMaxLength",function(value,element,params){
var length = value.length;
for( var i = 0; i < value.length; i++ ) {
if( value.charCodeAt(i) > 19967 ) {
length++;
}
}
return length>params[0]?false:true;
},"最大长度不能超过{0}个字符,一个汉字为两个字符")

怎么判断是汉字呢,我们是遍历的value,value.charCodeAt(i)返回的是value中对应下标为i的字符的unicode编码,

这个返回值是整数,它的范围是0-65535(10进制),而汉字的unicode编码的范围是19968-40869(10进制)。

所以根据这个范围判断如果是汉字,再在value.length的基础上加1。

下面是使用这个验证规则:

/* 定义表单验证规则 */
$().ready(function(){
$("#login").validate
rules:{
username:{
stringMaxLength:["10"] //参数必须这么传进去,如果想自定义它的校验错误信息,设置方法和其它规则一样
}
}
});
});

以上仅供参考,希望对您有所帮助。

Jquery Validate自定义验证规则,一个汉字等于两个字符长度的更多相关文章

  1. jquery validate 自定义验证方法

    query validate有很多验证规则,但是更多的时候,需要根据特定的情况进行自定义验证规则. 这里就来聊一聊jquery validate的自定义验证. jquery validate有一个方法 ...

  2. jquery validate 自定义验证方法 日期验证

    jquery validate有很多验证规则,但是更多的时候,需要根据特定的情况进行自定义验证规则. 这里就来聊一聊jquery validate的自定义验证. jquery validate有一个方 ...

  3. 扩展jquery.validate自定义验证,自定义提示,本地化

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  4. jquery.validate自定义验证--成功提示与择要提示

    1. 自定义验证--成功提示 1) 添加选项 errorClass: "unchecked", validClass: "checked", errorElem ...

  5. jQuery Validate自定义验证方法实现方式

    对应调用函数: ( 可以在内部写js/或者外部引入-我是外部引入的文件 )  validate.expand.js // JavaScript Document //检测手机号是否正确 jQuery. ...

  6. Jquery validate自定义验证

    http://www.runoob.com/jquery/jquery-plugin-validate.html addMethod(name,method,message)方法 参数 name 是添 ...

  7. Jquery Validate 相关参数及常用的自定义验证规则

    一.官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 二.默认校验规则 1 2 3 4 5 6 7 8 9 10 1 ...

  8. NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用

    NET MVC全局异常处理(一)   目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...

  9. C#计算字符串长度,汉字算两个字符

    在C#中的字符串类String中,有个Length属性表示字符串的长度,但该字段返回的是字符的个数,如果字符串中含有中文字符的话,一个汉字占用两个字符的长度,此时获取的长度就不够精确,当然也看具体业务 ...

随机推荐

  1. Linux系统函数read()/write()/pread()/pwrite()的区别-(转自CSDN网络)

    在Linux和UNIX中有很多的输入输出函数,有时真是让想跟它攀点关系的菜鸟们束手无策.先来看看都有哪些函数,通过解析与总结,看看能不能让大家能这些函数有个理性的认识,哦,原来是这么回事,也就算我没白 ...

  2. java 集合梳理

    使用 processOn 画的java 集合图谱,应付面试应该可以了

  3. 【GIS风暴】30米分辨率地表覆盖数据GlobeLand30原始数据集简介及下载地址

    数据集预览: GlobeLand30是30米空间分辨率全球地表覆盖数据,目前可供下载使用的有3年的数据:2000-2010-2020,本文主要讲述GlobeLand30的官网下载地址和数据集简介. 数 ...

  4. linux免密传输文件 nc

    nc命令很强大,用来在内网传输小文件也不错,最主要的是仅一次传输的情况下不需要用户和密码即可直接接受与发送文件 不管是linux2linux 还是 linux2windows皆可 先决条件: 1.使用 ...

  5. SystemVerilog MCDF检测器

    Monitor:检测DUT的边界信号或者内部信号,并且经过打包整理传送给其他的验证平台的组件(例如checker). 一:大的monitor方案 二:分布式的 两个monitor的比较: 比较下来,选 ...

  6. VMware Cloud Foundation 4.2 发布 - 领先的混合云平台

    VMware Cloud Foundation 4.2 | 09 FEB 2021 | Build 17559673 VMware Cloud Foundation 4.1 | 06 OCT 2020 ...

  7. node.js学习(3)模块

    1.创建文件 count.js 2 调用 3 改造 4 调用 5 再改造 6 在再改造

  8. JNDI注入和JNDI注入Bypass

    之前分析了fastjson,jackson,都依赖于JDNI注入,即LDAP/RMI等伪协议 JNDI RMI基础和fastjson低版本的分析:https://www.cnblogs.com/pia ...

  9. 摄像头ISP系统原理(下)

    摄像头ISP系统原理(下) l  WDR(Wide Dynamic Range)------宽动态 动态范围(Dynamic Range)是指摄像机支持的最大输出信号和最小输出信号的比值,或者说图像最 ...

  10. 适用于CUDA GPU的Numba例子

    适用于CUDA GPU的Numba例子 矩阵乘法 这是使用CUDA内核的矩阵乘法的简单实现: @cuda.jit def matmul(A, B, C): """Perf ...