asp文本框输入控制是5的倍数_如何控制asp控件textbox输入内容的长度??

本文探讨了如何在多行文本框中实现输入长度的有效控制,包括使用CustomValidator进行客户端验证,区分中文字符,并提供了JavaScript脚本示例。作者分享了两种方法,一是通过ClientValidationFunction控制字符数,二是扩展验证以适应中文字符的计数。
摘要由CSDN通过智能技术生成

件代码如下:

运行后无法控制输入内容长度,可以无限制输入。原因何在???望指教

MaxLength对单行文本框有效 多行就不行了

似乎现在也没有完美的解决方法 涉及的文本编码的很多方面 例如中,英文,数字 不是输入而是粘贴等等.

较可行的方法: 加入CustomValidator验证控件然后自己写脚本

转听棠blog 对这个问题的探讨:

第一.

在界面上使用上面的脚本,然后在需要验证的地方,加上CustomValidator验证控件,把ClientValidationFunction属性指定为"CheckLength",这个方法就是上面的客户端函数,函数中的 var ValidStrLength=50;    就是指要验证的字符数。要说明的是,这里的字符数是会自动区分中文字符的,一个中文字符会自动记为两个字符,因此,不需要象单行文本框一样,设置为总字符数的一半来控制。

好了,通过上面的设置,你就可以看到被控制的效果了!!

第二.

第一有个地方感觉不大好,就是这样用customer validator来控制就和一般textbox设置maxlength所得到的效果不是很一致.一种是限制输入一种是提示错误.

我是用的javascript来控制的.

//Set maxlength for multiline TextBox

function setMaxLength(object,length)

{

var result = true;

var controlid = document.selection.createRange().parentElement().id;

var controlValue = document.selection.createRange().text;

if (controlid == object.id && controlValue != "")

{

result = true;

}

else if (object.value.length >= length)

{

result = false;

}

if (window.event)

{

window.event.returnValue = result;

return result;

}

}

//Check maxlength for multiline TextBox when paste

function limitPaste(object,length)

{

var tempLength = 0;

if(document.selection)

{

if(document.selection.createRange().parentElement().id == object.id)

{

tempLength = document.selection.createRange().text.length;

}

}

var tempValue = window.clipboardData.getData("Text");

tempLength = object.value.length + tempValue.length - tempLength;

if (tempLength > length)

{

tempLength -= length;

tempValue = tempValue.substr(0,tempValue.length - tempLength);

window.clipboardData.setData("Text", tempValue);

}

window.event.returnValue = true;

}

然后设多行的textbox的2个属性.

οnkeypress="javascript:setMaxLength(this,100);" οnpaste="limitPaste(this, 100)"

第三.

第二的方案很不错,但也一个问题,就是没有区分中英文字符,中文字符应该算作是两个字符,为此我进行了扩展:

然后设多行的textbox的2个属性.

οnkeypress="javascript:setMaxLength(this,100);" οnpaste="limitPaste(this, 100)"

现在好了,可以自动区分中英文了,这个方案不错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值