Jquery Validate自定义验证规则,一个汉字等于两个字符长度
使用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自定义验证规则,一个汉字等于两个字符长度的更多相关文章
- jquery validate 自定义验证方法
query validate有很多验证规则,但是更多的时候,需要根据特定的情况进行自定义验证规则. 这里就来聊一聊jquery validate的自定义验证. jquery validate有一个方法 ...
- jquery validate 自定义验证方法 日期验证
jquery validate有很多验证规则,但是更多的时候,需要根据特定的情况进行自定义验证规则. 这里就来聊一聊jquery validate的自定义验证. jquery validate有一个方 ...
- 扩展jquery.validate自定义验证,自定义提示,本地化
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- jquery.validate自定义验证--成功提示与择要提示
1. 自定义验证--成功提示 1) 添加选项 errorClass: "unchecked", validClass: "checked", errorElem ...
- jQuery Validate自定义验证方法实现方式
对应调用函数: ( 可以在内部写js/或者外部引入-我是外部引入的文件 ) validate.expand.js // JavaScript Document //检测手机号是否正确 jQuery. ...
- Jquery validate自定义验证
http://www.runoob.com/jquery/jquery-plugin-validate.html addMethod(name,method,message)方法 参数 name 是添 ...
- Jquery Validate 相关参数及常用的自定义验证规则
一.官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 二.默认校验规则 1 2 3 4 5 6 7 8 9 10 1 ...
- 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有相关 ...
- C#计算字符串长度,汉字算两个字符
在C#中的字符串类String中,有个Length属性表示字符串的长度,但该字段返回的是字符的个数,如果字符串中含有中文字符的话,一个汉字占用两个字符的长度,此时获取的长度就不够精确,当然也看具体业务 ...
随机推荐
- 9.8-9 nice & renice
nice:调整程序运行时的优先级 nice命令是一个当程序启动时,修改程序运行优先级的命令. Linux的优先级范围是从-20(最大优先级)到19(最小优先级).优先级越高的程序占用CP ...
- 2.1 CPU 上下文切换(上)
cpu上下文与切换 进程在竞争 CPU 的时候并没有真正运行,为什么还会导致系统的负载升高呢?CPU 上下文切换就是罪魁祸首. 我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量 ...
- unity中使用Highlighting System v4.0插件给物体添加高亮
插件:Highlighting System v4.0 操作:在摄像机上挂上HighlightingRenderer脚本 脚本目录在\Assets\Plugins\HighlightingSystem ...
- Windows登录服务器CLI运行脚本出现 syntax error: unexpected end of file 错误的解决
0.前言 通常我们在编辑 Linux 服务器上的文件时,直接在 Linux 环境比较麻烦(当然熟练使用 VIM 的程序员除外哈哈),有时我们会使用 Windows 将文件编辑好再上传到服务器端,我用的 ...
- golang快速入门(六)特有程序结构
提示:本系列文章适合对Go有持续冲动的读者 阅前须知:在程序结构这章,更多会关注golang中特有结构,与其他语言如C.python中相似结构(命名.声明.赋值.作用域等)不再赘述. 一.golang ...
- (重磅)Internal: Failed to call ThenRnnForward with model config问题的解决(Keras 2.4.3和Tensorflow2.0系列)
与此问题斗争了整整十天.win10,keras2.4.3,CUDA 10.1,CUDNN 7.6, tensorflow 2.3.0,驱动程序nvida 452 该问题出现在BiLSTM(GPU加速) ...
- 用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割
用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割 Accelerating Medical Image Segmentation with NVIDIA Tensor ...
- Github_远程仓库多人协作操作,解决冲突
前提:假设原已有一个代码仓库,加入协作者,大家一起完成一个项目. 一.添加伙伴-->伙伴同意加入-->伙伴clone,提交代码 1.创建者进入仓库主页 ==> Settings页面 ...
- 解决servlet响应乱码问题
当我们使用servlet响应中文时,浏览器接收的内容就会乱码显示出来,原因是响应数据时使用的是utt-8编码,而浏览器解析响应用的的编码却不是utf-8,这样就会造成乱码. 解决办法: respons ...
- NX二次开发-获取WCS坐标系的原点坐标和矩阵标识
函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...