//验证的方法,20个字节,10个中文
<textarea name="txtCheck" id="txtCheck" oninput="CheckLenth(this,20)" onpropertychange="CheckLenth(this,20)"></textarea>
<script>
//需要调用的js
function CheckLenth(obj, maxlimit) {
var len = byteLength(obj.value);
if(len > maxlimit) {
obj.value = getStrbylen(obj.value, maxlimit);
}
}
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 = strlen+ 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));
}
</script>
谢谢回答!改天有时间一定试试这个方法,目前采用的是这种方式:参数就是要验证的输入框的值
public static int GetLength(string str)
{
if (str == null || str.Length == 0) { return 0; }
int l = str.Length;
int realLen = l;
#region 计算长度
int clen = 0;//当前长度
while (clen < l)
{
//每遇到一个中文,则将实际长度加一。
if ((int)str[clen] > 128) { realLen++; }
clen++;
}
#endregion
return realLen;
}
肯定是用javascript了 网上有的是验证的网页 down下来就ok了!
谢谢回答!目前采用的是这种方式:参数就是要验证的输入框的值
public static int GetLength(string str)
{
if (str == null || str.Length == 0) { return 0; }
int l = str.Length;
int realLen = l;
#region 计算长度
int clen = 0;//当前长度
while (clen < l)
{
//每遇到一个中文,则将实际长度加一。
if ((int)str[clen] > 128) { realLen++; }
clen++;
}
#endregion
return realLen;
}
这个有好多方案的,Jquery的Validation表单验证是一个方案,可以自己写JavaScript或者Jquery验证或者直接在控件里面写入maxlength='20'也行!
谢谢回答!目前采用的是这种方式:参数就是要验证的输入框的值
public static int GetLength(string str)
{
if (str == null || str.Length == 0) { return 0; }
int l = str.Length;
int realLen = l;
#region 计算长度
int clen = 0;//当前长度
while (clen < l)
{
//每遇到一个中文,则将实际长度加一。
if ((int)str[clen] > 128) { realLen++; }
clen++;
}
#endregion
return realLen;
}
用maxlength, 如果是做长度验证的话前台js的同时后台也加一下验证
谢谢回答!目前采用的是这种方式:参数就是要验证的输入框的值
public static int GetLength(string str)
{
if (str == null || str.Length == 0) { return 0; }
int l = str.Length;
int realLen = l;
#region 计算长度
int clen = 0;//当前长度
while (clen < l)
{
//每遇到一个中文,则将实际长度加一。
if ((int)str[clen] > 128) { realLen++; }
clen++;
}
#endregion
return realLen;
}
aspx 底下只能通过js验证,自带的好象不行
谢谢回答!
将中文替换成两个字符验证:
"中文".replace(/[\u4E00-\u9FA5]/gi, "00").length
正解,我们这边 一般这种栏位 在设计的时候不用varchar 用nvarchar。
谢谢回答!目前采用的是这种方式:参数就是要验证的输入框的值
public static int GetLength(string str)
{
if (str == null || str.Length == 0) { return 0; }
int l = str.Length;
int realLen = l;
#region 计算长度
int clen = 0;//当前长度
while (clen < l)
{
//每遇到一个中文,则将实际长度加一。
if ((int)str[clen] > 128) { realLen++; }
clen++;
}
#endregion
return realLen;
}
maxlength
同时在后台还需要进行验证
谢谢回答!目前采用的是这种方式:参数就是要验证的输入框的值
public static int GetLength(string str)
{
if (str == null || str.Length == 0) { return 0; }
int l = str.Length;
int realLen = l;
#region 计算长度
int clen = 0;//当前长度
while (clen < l)
{
//每遇到一个中文,则将实际长度加一。
if ((int)str[clen] > 128) { realLen++; }
clen++;
}
#endregion
return realLen;
}
哈哈,我想是不是你数据的字段给的长度太小了,导致保存的时候会提示这样的错误。
是的,不过,这个只是一方面原因,最主要的还是要做一个输入最大长度的限制。谢谢回答!