0

我想计算短信应用程序的键入字符字节数。如果键入 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> 
4

1 回答 1

2

你有

var tmpStr = cutByLen( text, byteLen );

文本的长度在哪里byteLen,所以如果它比它本身长,它会切断字符串,这显然什么都不做。你的意思可能是

var tmpStr = cutByLen( text, 80 );
于 2013-05-25T12:18:46.780 回答