一个用js限制用户输入字节个数的问题.

js|问题

页面上有一个textarea(注意是多行的),现在需要用Js实现下面的功能.

1.只能输入一定字节的字符,比如允许的最大长度是10,那么只能输入10个字母或者5个 汉字(双字节的字符).
2.而且允许用户用退格键,delete键以及其他的非字符键.
3.必须同时支持ie和firefox,太低的版本可以不考虑. 
4.用户粘贴的时候也必须保证不会超过允许的最大长度,不能单单考虑用键盘输入.
5.以上功能是基于字节的,不是字符.

搞了老半天没有搞定,网上也没有特别好的资料.
如果有兄弟帮解决了,我可以放非技术分或者捐赠可用分.
谢谢!

---------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <SCRIPT LANGUAGE="JavaScript">
  <!--
function CutStrLength(str, Ilength)

var tmp = 0;
var len = 0;
var okLen = 0
for(var i=0;i<Ilength;i++)
{
if(str.charCodeAt(i)>255)
tmp += 2 
else
len += 1
okLen += 1
if(tmp + len == Ilength) 
{
return (str.substring(0,okLen));
break;
}
if(tmp + len > Ilength)
{
return (str.substring(0,okLen - 1) + " "); 
break;
}
}
}

function  checkFieldLength(fieldName,fieldDesc,fieldLength   )   
  {     

  var   str   = document.getElementById(fieldName).value;   
  var   theLen=0;   
var   teststr='';   
  for   (i=0;i<str.length;i++)   
  {   
  teststr=str.charAt(i);     
if(str.charCodeAt(i)>255)   
theLen=theLen   +   2;   
else   
  theLen=theLen   +   1;   
  }  
  document.getElementById('showMsg').innerText = theLen;
  if(   theLen>fieldLength   )   
  {  
  document.getElementById('showMsg').innerText = fieldDesc;
  //alert(fieldDesc+"   的字段长度超过规定长度!");   
  //document.getElementById(fieldName).focus();   
  document.getElementById(fieldName).value = CutStrLength(str, fieldLength);
  return   false;   
  }   
  else   
  {   
  return   true;   
  }   
  }
  //-->
  </SCRIPT>
 </HEAD>

 <BODY>
  <FORM METHOD=POST ACTION="">
<TEXTAREA ID="testArea" NAME="testArea" ROWS="3" COLS="22" onkeyup="checkFieldLength('testArea', '超过允许输入的字符个数', 20);" ></TEXTAREA>
<div id="testInfo">已经输入:<span id="showMsg"></span></div>
  </FORM>
 </BODY>
</HTML>

---------------------------------------------------------------

客户一定要?你就捕捉那几个事件即可。在事件里判断字符数
关于中文、英文,可以参考
http://blog.csdn.net/net_lover/archive/2002/03/29/6898.aspx
---------------------------------------------------------------

<html>
<head>
<script language="javascript" type="text/javascript">
function isMaxLen(o){  
 var nMaxLen=o.getAttribute? parseInt(o.getAttribute("maxlength")):"";  

var v = o.value;
var d = (v.match(/[\x00-\xff]/g) || "").length; //获取单字节个数
var s = v.length - d; //获取双字节个数

var allLen = d + s * 2 ;

 if(o.getAttribute && allLen >nMaxLen){  
 o.value=o.value.substring(0,nMaxLen/2)  
 }  

</Script>
</head>
<body>
 <input typ="text" onkeyup="return isMaxLen(this)" ID="txtComment" MaxLength="10" TextMode="MultiLine" Height="90px" />
</body>
</html>

页面上有一个textarea(注意是多行的),现在需要用Js实现下面的功能.

1.只能输入一定字节的字符,比如允许的最大长度是10,那么只能输入10个字母或者5个 汉字(双字节的字符).
2.而且允许用户用退格键,delete键以及其他的非字符键.
3.必须同时支持ie和firefox,太低的版本可以不考虑. 
4.用户粘贴的时候也必须保证不会超过允许的最大长度,不能单单考虑用键盘输入.
5.以上功能是基于字节的,不是字符.

搞了老半天没有搞定,网上也没有特别好的资料.
如果有兄弟帮解决了,我可以放非技术分或者捐赠可用分.
谢谢!

---------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <SCRIPT LANGUAGE="JavaScript">
  <!--
function CutStrLength(str, Ilength)

var tmp = 0;
var len = 0;
var okLen = 0
for(var i=0;i<Ilength;i++)
{
if(str.charCodeAt(i)>255)
tmp += 2 
else
len += 1
okLen += 1
if(tmp + len == Ilength) 
{
return (str.substring(0,okLen));
break;
}
if(tmp + len > Ilength)
{
return (str.substring(0,okLen - 1) + " "); 
break;
}
}
}

function  checkFieldLength(fieldName,fieldDesc,fieldLength   )   
  {     

  var   str   = document.getElementById(fieldName).value;   
  var   theLen=0;   
var   teststr='';   
  for   (i=0;i<str.length;i++)   
  {   
  teststr=str.charAt(i);     
if(str.charCodeAt(i)>255)   
theLen=theLen   +   2;   
else   
  theLen=theLen   +   1;   
  }  
  document.getElementById('showMsg').innerText = theLen;
  if(   theLen>fieldLength   )   
  {  
  document.getElementById('showMsg').innerText = fieldDesc;
  //alert(fieldDesc+"   的字段长度超过规定长度!");   
  //document.getElementById(fieldName).focus();   
  document.getElementById(fieldName).value = CutStrLength(str, fieldLength);
  return   false;   
  }   
  else   
  {   
  return   true;   
  }   
  }
  //-->
  </SCRIPT>
 </HEAD>

 <BODY>
  <FORM METHOD=POST ACTION="">
<TEXTAREA ID="testArea" NAME="testArea" ROWS="3" COLS="22" onkeyup="checkFieldLength('testArea', '超过允许输入的字符个数', 20);" ></TEXTAREA>
<div id="testInfo">已经输入:<span id="showMsg"></span></div>
  </FORM>
 </BODY>
</HTML>

---------------------------------------------------------------

客户一定要?你就捕捉那几个事件即可。在事件里判断字符数
关于中文、英文,可以参考
http://blog.csdn.net/net_lover/archive/2002/03/29/6898.aspx
---------------------------------------------------------------

<html>
<head>
<script language="javascript" type="text/javascript">
function isMaxLen(o){  
 var nMaxLen=o.getAttribute? parseInt(o.getAttribute("maxlength")):"";  

var v = o.value;
var d = (v.match(/[\x00-\xff]/g) || "").length; //获取单字节个数
var s = v.length - d; //获取双字节个数

var allLen = d + s * 2 ;

 if(o.getAttribute && allLen >nMaxLen){  
 o.value=o.value.substring(0,nMaxLen/2)  
 }  

</Script>
</head>
<body>
 <input typ="text" onkeyup="return isMaxLen(this)" ID="txtComment" MaxLength="10" TextMode="MultiLine" Height="90px" />
</body>
</html>

 

时间: 2024-12-31 02:25:33

一个用js限制用户输入字节个数的问题.的相关文章

c语言-声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么

问题描述 声明一个数组,由用户输入数组长度.不赋初值不报错,赋初值就报错?为什么 基本上,代码如下: #include<stdio.h> int main(){ int num = 0; printf(""输入数组长度:""); scanf(""%d""&num); int arr[num]; //编译不报错 //int arr[num] = {0}://编译报错 return 0;} 解决方案 因为C语言

编写一个java代码接受用户输入的账号和密码 给三次机会。但是运行后输入后显示错误。

问题描述 编写一个java代码接受用户输入的账号和密码 给三次机会.但是运行后输入后显示错误. package www; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class SwingJFrame extends JFrame implements ActionListener{ JLabel jb1=new JLabel("输入帐号:"); JLabel jb2=new JLab

js根据用户输入获取日期生成日期

提示:您可以先修改部分代码再运行 js根据用户输入获取日期生成日期 js根据用户输入获取日期生成日期 提示:您可以先修改部分代码再运行

js根据用户输入信息左右移动代码

提示:您可以先修改部分代码再运行 提示:您可以先修改部分代码再运行

js验证用户输入的是否为中文

提示:您可以先修改部分代码再运行 提示:您可以先修改部分代码再运行

ASP.NET中用户输入文本的HTML解析办法

asp.net|asp.net 网页中用TextBox让用户输入文本,然后存入数据库,再从数据库中读出显示在页面上.常常这样做会遇到不少问题,因为TextBox实际上是一个Windows组件,和网页显示标记如:<p>,<td>,<div>等,对字符的解析方法是不同的.比如前者的换行标记为"\r\n",而后者为"<br>".这就带来一个转换的问题. 在做转换之前,先来考虑几个问题: 1. TextBox用"\r

如何获取用户输入、后退等方式转到其它网页的URL?

问题描述 如何用JS获取用户输入.后退等方式转到其它网页的Url?如用户正在本网站浏览,但他在地址栏输入了其它网站的网址,转向到了其它网站并同时退出了本网站.那本网站的JS程序有可能获取用户转到的新网址吗?同样的问题还有在后退转向页面时 解决方案 解决方案二:window.onbeforeunload=function(){alert(document.location.href)}退出本页的时候执行解决方案三:linggws你的意思是直接在自己页面上加上这段代码来监听浏览器的回退吗?解决方案四

js中判断用户输入的值是否为空的简单实例

 本篇文章主要是对js中判断用户输入的值是否为空的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在js中判断用户输入的值是否为空,这是大家用得非常多的. 这没有什么好写的. 而我却写了. 原因只是自以为是的认为我的这些代码写得不错, 供大家参考一下.   这是摘自的我一个项目的中的用户注册页面.对于大多数人来说,这都几乎是100%经历过的. 贴代码吧,这些代码都是用js写的. 不难,很容易看懂. 看的时候,只要区别两个js类就行了. 前台页面代码:reguser.aspx  

c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度

问题描述 c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度 我在统计中文的时候出现了问题,请各位大神指教一下 #include #include using namespace std; int main() { string str; cout << "请输入一个字符串,以换行为结束!n"; getline(cin, str); size_t count = 0; size_t spaceNum=0; size_t lette