<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> <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> |