如何用javascript判断输入的字数 做一个博客系统限制字符数最大为65535字节,往数据库插入数据前,要用javascript限制一下输入字数,数据库用的是utf-8编码,由于一个英文字母数字等占1个字节,而一个汉字占3个字节,有什么javascript可以准确计算出所输入的字节数(如英文字符等算一个字符,其它的统统算3个字符)? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 L@_@K<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> <meta name="generator" content="editplus" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> </head> <body> <script type="text/javascript"> <!--function countByteLength(str, cnCharByteLen){ var byteLen = 0; for (var i=0; i<str.length; i++) { alert(str.charAt(i)); if ((/[\x00-\xff]/g).test(str.charAt(i))) byteLen += 1; else byteLen += cnCharByteLen; alert(byteLen); } return byteLen;}// 哈喽,world!// 17alert(countByteLength("哈喽,world!", 3)); //--> </script> </body></html> var s="12中文";var n=0;for(i=0;i<s.length;i++){ if(s.charCodeAt(i)<128) n++; else n += 3; }alert(n); <script type="text/javascript"> //短信字数限制 function textCounter(obj, showid, maxlimit) { var len = strLen(obj.value); var showobj = document.getElementById(showid); if(len > maxlimit) { obj.value = getStrbylen(obj.value, maxlimit); showobj.innerHTML = '0'; } else { showobj.innerHTML = maxlimit - len; } if(maxlimit/2 - len > 0) { showobj.parentNode.style.color = ""; } else { showobj.parentNode.style.color = "red"; } } function getStrbylen(str, len) { var num = 0; var strlen = 0; var newstr = ""; var obj_value_arr = str.split(""); for(var i = 0; i < obj_value_arr.length; i ++) { if(i < len && num + byteLength(obj_value_arr[i]) <= len) { num += byteLength(obj_value_arr[i]); strlen = i + 1; } } if(str.length > strlen) { newstr = str.substr(0, strlen); } else { newstr = str; } return newstr; } function byteLength (sStr) { aMatch = sStr.match(/[^\x00-\x80]/g); return (sStr.length + (! aMatch ? 0 : aMatch.length)); } function strLen(str) { var charset = document.charset; var len = 0; for(var i = 0; i < str.length; i++) { len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == "utf-8" ? 1 : 1) : 1; } return len; } </script> <textarea class="tarea" name="newcontent" id="newcontent" oninput="textCounter(this,'maxlimit',140)" onpropertychange="textCounter(this,'maxlimit',140)"/></textarea> 还可以输入<strong id="maxlimit">140</strong>字 重新优化了下L@_@K<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> <meta name="generator" content="editplus" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> </head> <body> <script type="text/javascript"> <!--function countByteLength(str, cnCharByteLen){ var reCnChar = /[^\x00-\xff]/g; return str.length + (str.match(reCnChar).length * --cnCharByteLen);}var str = "哈喽,world!\nHello, world!";// \n 被识别为一个字符alert("\n".length);alert(str);// 31alert(countByteLength(str, 3)); //--> </script> </body></html> 我就来个简单的<textarea maxlength="65535"></textarea> <div style="color:blue">test</div> 关于media player播放 音频和视频 问各位大侠,怎样实现输入一段英文,将单词间的空格全部去处? JS编辑器即时显示问题 直接拿别人网站上的js来用会不会侵权 奇怪的问题 求助 谁有通过年份、月份得到该月天数的函数 怎么实现在网页中点一个按钮,就可以在桌面建立快捷方式 有关document.write 怎样让窗口最大化没有滚动条,真正的全屏 在js里,有没有像vs里left(),right()函数?请帮忙,急用。谢谢! 是否能够屏蔽或者禁用掉浏览器的滚动条事件 jquery动态添加行,如何实现添加行的name值自增?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head> <body>
<script type="text/javascript">
<!--
function countByteLength(str, cnCharByteLen)
{
var byteLen = 0; for (var i=0; i<str.length; i++)
{
alert(str.charAt(i));
if ((/[\x00-\xff]/g).test(str.charAt(i)))
byteLen += 1;
else
byteLen += cnCharByteLen;
alert(byteLen);
} return byteLen;
}// 哈喽,world!
// 17
alert(countByteLength("哈喽,world!", 3));
//-->
</script>
</body>
</html>
var s="12中文";
var n=0;
for(i=0;i<s.length;i++){
if(s.charCodeAt(i)<128) n++;
else n += 3;
}
alert(n);
//短信字数限制
function textCounter(obj, showid, maxlimit) {
var len = strLen(obj.value);
var showobj = document.getElementById(showid);
if(len > maxlimit) {
obj.value = getStrbylen(obj.value, maxlimit);
showobj.innerHTML = '0';
} else {
showobj.innerHTML = maxlimit - len;
}
if(maxlimit/2 - len > 0) {
showobj.parentNode.style.color = "";
} else {
showobj.parentNode.style.color = "red";
}
}
function getStrbylen(str, len) {
var num = 0;
var strlen = 0;
var newstr = "";
var obj_value_arr = str.split("");
for(var i = 0; i < obj_value_arr.length; i ++) {
if(i < len && num + byteLength(obj_value_arr[i]) <= len) {
num += byteLength(obj_value_arr[i]);
strlen = i + 1;
}
}
if(str.length > strlen) {
newstr = str.substr(0, strlen);
} else {
newstr = str;
}
return newstr;
}
function byteLength (sStr) {
aMatch = sStr.match(/[^\x00-\x80]/g);
return (sStr.length + (! aMatch ? 0 : aMatch.length));
}
function strLen(str) {
var charset = document.charset;
var len = 0;
for(var i = 0; i < str.length; i++) {
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == "utf-8" ? 1 : 1) : 1;
}
return len;
}
</script>
<textarea class="tarea" name="newcontent" id="newcontent" oninput="textCounter(this,'maxlimit',140)" onpropertychange="textCounter(this,'maxlimit',140)"/></textarea>
还可以输入<strong id="maxlimit">140</strong>字
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head> <body>
<script type="text/javascript">
<!--
function countByteLength(str, cnCharByteLen)
{
var reCnChar = /[^\x00-\xff]/g; return str.length + (str.match(reCnChar).length * --cnCharByteLen);
}var str = "哈喽,world!\nHello, world!";
// \n 被识别为一个字符
alert("\n".length);
alert(str);
// 31
alert(countByteLength(str, 3));
//-->
</script>
</body>
</html>
<textarea maxlength="65535"></textarea>