SMSアプリケーションの入力文字バイト数をカウントしたい。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>