你早晚会用到的,用CSS来控制文字长度毕竟不是什么需求都能满足,现在后台也不管字符长度截取了,只能用JS来截取字符串了。
代码如下 | 复制代码 |
/** * 返回字符的字节长度(汉字算2个字节) * @param {string} * @returns {number} */ var getByteLen = function (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; } var sAbc = '1a啊啊22飞3地方a'; var ol = getByteLen(sAbc); alert('直接用length取得的字节长度:' + sAbc.length); alert('通过getByteLen()方法取得的字节长度:' + ol); |
通过上面的方法就可以继续写一个截取指定长度的新字符串了,截取掉的部分用…补全:
代码如下 | 复制代码 |
/** * 返回字符的字节长度(汉字算2个字节) * @param {string}{number} * @returns {string} +'...' */ var cutStrForNum = function (str, num) { var len = 0; for (var i = 0; i < str.length; i++) { if (str[i].match(/[^x00-xff]/ig) != null) //全角 len += 2; else len += 1; } if (len >= num) { newStr = str.substring(0, num) + "..."; } return newStr; } var sAbc = '1a啊啊22飞3地方a'; alert(cutStrForNum(sAbc, 3)); |
看个实例JS判断字符输入个数
1. $('textarea#txtPrizeNote'); //表示textarea控件名称
2. 'span' 显示剩余字数的标签
HTML:
代码如下 | 复制代码 |
<div> <textarea id="txtPrizeNote" runat="server" height="74px" width="480px" maxlength="10" style="width: 480px; height: 74px; float: left"></textarea> <span style="color: Red;">*</span><br /> 剩余字数:<span id="showmsg" style="color: red"></span> </div> //返回val在规定字节长度max内的值 if (byteValLen > max) returnValue += val[i]; $(function() { _val = $(this).val(); if (_cur == 0) {//当默认值长度为0时,可输入数为默认maxlength值 $(this).val(getByteVal(_val,_max)); //截取指定字节长度内的值 |