今天遇到TEXTBOX在多行情况下的最大长度问题,网上有一些解决方法,但是都不是我最终需要的,不过还是整理了一下,差不多符合要求了。
此JAVASCRIPT方法还有一个地方需要解决,就是控制不了用户在复制、粘贴的情况下输入。
最后在代码页要添加如下:
此JAVASCRIPT方法还有一个地方需要解决,就是控制不了用户在复制、粘贴的情况下输入。
function textCounter(field, maxlimit)
{
var length = getStrActualLen(field.value);
//如果是全部半角的情况下
if(checkHankakuEisuji(field.value))
{
if (length > maxlimit)
{
field.value = field.value.substring(0, maxlimit);
}
}
else //含有全角的情况下 //.replace(/[^\x00-\xff]/g)
{
if(length >maxlimit)
{
var fulllength = 0; //其中全角的长度
var halflength = 0; //其中半角的长度
var newlength = 0; //实际要取的长度
for(var i=0;i<field.value.length;i++)
{
var code = field.value.charCodeAt(i);
if(code<48 || (code>57 && code<65) || (code>90 && code<97) || code>122)
{
fulllength = fulllength + 1;
}
else
{
halflength = halflength +1;
}
}
newlength = halflength + (fulllength -1);
field.value = field.value.substring(0, newlength);
}
}
}
之所以要考虑全角半角的情况是因为数据库中的子段是一半角来计算的,英文可以输规定长度,但是汉字就只能输一半的长度,所以。{
var length = getStrActualLen(field.value);
//如果是全部半角的情况下
if(checkHankakuEisuji(field.value))
{
if (length > maxlimit)
{
field.value = field.value.substring(0, maxlimit);
}
}
else //含有全角的情况下 //.replace(/[^\x00-\xff]/g)
{
if(length >maxlimit)
{
var fulllength = 0; //其中全角的长度
var halflength = 0; //其中半角的长度
var newlength = 0; //实际要取的长度
for(var i=0;i<field.value.length;i++)
{
var code = field.value.charCodeAt(i);
if(code<48 || (code>57 && code<65) || (code>90 && code<97) || code>122)
{
fulllength = fulllength + 1;
}
else
{
halflength = halflength +1;
}
}
newlength = halflength + (fulllength -1);
field.value = field.value.substring(0, newlength);
}
}
}
最后在代码页要添加如下:
this.Remark.Attributes.Add("onKeyDown", "textCounter(this,40);");
this.Remark.Attributes.Add("onKeyUp", "textCounter(this,40);");
this.Remark.Attributes.Add("onKeyUp", "textCounter(this,40);");