博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
input框限制字数小demo(区分中文字符和英文字符)
阅读量:5037 次
发布时间:2019-06-12

本文共 1240 字,大约阅读时间需要 4 分钟。

【方法】:利用input框的keyup事件,动态监听value值是否超过最大允许范围,若超出则删除超出部分的字符串

【中文字符正则】:/[\u4e00-\u9fa5]/g

【demo】:

 
 <input type="text" id="testInput">
  <div id="letterNum">0</div>
  
  
$('#testInput').on('keyup', function(event){
    var originText = $(event.target).val();   //获取当前input框内的value值
    if(originText.trim()){   //去除前后空格
      var obj = sliceOne(originText.trim(),10);  //调用截取函数,获得截取后的字符串与字节数
      $(event.target).val(obj.text);   //将截取后的字符串赋值给input
      $('#letterNum').text(obj.sum);   //将字节数赋值给div
    }else{
      $('#letterNum').text(0);    //input框没有value值时,赋值0给div
    }
  });
  
·  function sliceOne(str,max){   //param1:字符串,param2:允许最大字节数
    var num = 0;    //用以计算当前字符串是否超过max
    var oStr = '';    //将没有超过max的字符保存
    var outNum = 0;    //最终计算没有超过max的字符
    for(var i = 0,len = str.length; i < len; i++){   //遍历字符串
      if(reg.test(str[i])){          //如果匹配中文正则的,num累加2,否则累加1
        num += 2;
      }else{
        num += 1;
      }
      if(num > max){        //如果num超过max,跳出循环
        console.log(num);
        break;
      }else{             //如果num不超过max,将此时的字符累加到oStr中,将此时的字节数赋值给outNum
        oStr += str[i];
        outNum = num;
      }
    }
    var obj = {
      text: oStr,
      sum: outNum
    }
    return obj;     //返回
  }

 

转载于:https://www.cnblogs.com/Drose/p/7215081.html

你可能感兴趣的文章
【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.1.CSS框架和其他功能
查看>>
如何一个pdf文件拆分为若干个pdf文件
查看>>
web.xml中listener、 filter、servlet 加载顺序及其详解
查看>>
前端chrome浏览器调试总结
查看>>
获取手机验证码修改
查看>>
数据库连接
查看>>
python中数据的变量和字符串的常用使用方法
查看>>
等价类划分进阶篇
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
java 字符串转json,json转对象等等...
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Linux内核OOM机制的详细分析
查看>>