您的位置:首页 > Web前端 > JQuery

jquery 字符个数(数字字母长度记为1,中文记为2,超过长度自动截)

2014-10-10 15:16 316 查看
<script type="text/javascript">
  //返回val的字节长度
  function getByteLen(val) {
    var len = 0;
    for (var i = 0; i < val.length; i++) {
      if (val[i].match(/[^\x00-\xff]/ig) != null) //全角
        len += 2;
      else
        len += 1;
      }
    return len;
  }
  //返回val在规定字节长度max内的值
  function getByteVal(val, max) {
    var returnValue = '';
    var byteValLen = 0;
    for (var i = 0; i < val.length; i++) {
      if (val[i].match(/[^\x00-\xff]/ig) != null)
        byteValLen += 2;
      else
        byteValLen += 1;
      if (byteValLen > max)
        break;
      returnValue += val[i];
    }
    return returnValue;
  }
  $(function() {
    var _area = $('textarea#txtPrizeNote');
    var _info = _area.next();
    var _max = _area.attr('maxlength');
    var _val;
    _area.bind('keyup change', function() { //绑定keyup和change事件
      if (_info.find('span').size() < 1) {//避免每次弹起都会插入一条提示信息
        _info.append(_max);
      }
      _val= $(this).val();
      _cur = getByteLen(_val);
      if (_cur == 0) {//当默认值长度为0时,可输入数为默认maxlength值
        _info.text(_max);
      } else if (_cur < _max) {//当默认值小于限制数时,可输入数为max-cur
        _info.text(_max - _cur);
      } else {//当默认值大于等于限制数时
        _info.text(0);
        $(this).val(getByteVal(_val,_max)); //截取指定字节长度内的值
      }
    });
  });
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐