我想计算短信应用程序的键入字符字节数。如果键入 ASCII,它计为 1 个字节,对于非 ASCII,它计为 2 个字节。如果总字符字节超过 80 字节,脚本应该警告('你已经达到超过 80 字节'),然后它应该从末尾切到小于 80 字节。但是,cutBylen() 函数似乎在此脚本中不起作用。它只是发出警报,但不会切断字符串。谁能告诉我问题出在哪里?非常感谢。
<script>
function countBytes( str ) {
var count = 0;
for ( var i = 0; i < str.length; i++ ) {
var onechar = str.charAt( i );
if ( str.charCodeAt( i ) >= 128 ) {
count += 2;
} else if ( onechar != '\r' ) {
count++;
}
}
return count;
}
</script>
<script>
function cutByLen( str, byteLen ) {
var tmpStr = str;
while (countBytes( tmpStr ) > byteLen) {
var len = tmpStr.length;
tmpStr = tmpStr.substr( 0, len - 1 );
}
return tmpStr;
}
</script>
<script>
$(document).ready(function() {
$("#smstext1").keyup(function(){
var text = $(this).val();
var byteLen = countBytes(text);
var len = text.length;
if (byteLen >80){
alert('You have reached over 80bytes');
var tmpStr = cutByLen( text, byteLen );
$(this).val(tmpStr);
}
});
});
</script>