Я хочу подсчитать типизированные байты символов для приложения sms. Если ASCII печатается, он подсчитывает 1 байт, а для не ASCII - 2 байта. Если общий байтовый байт составляет более 80 байт, сценарий должен предупредить («Вы достигли более 80 байтов»), после чего он должен вырезать с конца, пока он не станет меньше 80 байт. Однако функция cutBylen(), похоже, не работает в этом скрипте. Он просто предупреждает, но не режет строку. Может ли кто-нибудь сказать мне, где проблема? Большое спасибо.Функция javascript не работает в jQuery
<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>
Отлично! Это действительно сработало. Во время отладки я очень расстроился и ничего не нашел. Я знал, что это должно быть очень просто. Еще раз спасибо, чувак :). – xnote