jquery判定文字入力個数(数字は英語で1、中国語で2、長さを超えると自動的に切り取る)
2206 ワード
1. $('textarea#txtPrizeNote');//textareaコントロール名を表す
2.'span'余剰文字数を表示するラベル
HTML:
2.'span'余剰文字数を表示するラベル
HTML:
*
:
<br>// val
<br>function getByteLen(val) {
<br>var len = 0;
<br>for (var i = 0; i < val.length; i++) {
<br>if (val[i].match(/[^\x00-\xff]/ig) != null) //
<br>len += 2;
<br>else
<br>len += 1;
<br>}
<br>return len;
<br>}
<br>// val max
<br>function getByteVal(val, max) {
<br>var returnValue = '';
<br>var byteValLen = 0;
<br>for (var i = 0; i < val.length; i++) {
<br>if (val[i].match(/[^\x00-\xff]/ig) != null)
<br>byteValLen += 2;
<br>else
<br>byteValLen += 1;
<br>if (byteValLen > max)
<br>break;
<br>returnValue += val[i];
<br>}
<br>return returnValue;
<br>}
<br>$(function() {
<br>var _area = $('textarea#txtPrizeNote');
<br>var _info = _area.next();
<br>var _max = _area.attr('maxlength');
<br>var _val;
<br>_area.bind('keyup change', function() { // keyup change
<br>if (_info.find('span').size() < 1) {//
<br>_info.append(_max);
<br>}
<br>_val = $(this).val();
<br>_cur = getByteLen(_val);
<br>if (_cur == 0) {// 0 , maxlength
<br>_info.text(_max);
<br>} else if (_cur < _max) {// , max-cur
<br>_info.text(_max - _cur);
<br>} else {//
<br>_info.text(0);
<br>$(this).val(getByteVal(_val,_max)); //
<br>}
<br>});
<br>});
<br>