ValidateTextBox发布--绝对实用
最新更新版本,比这个版好用多了,呵呵 :http://www.cnblogs.com/thinhunan/archive/2005/04/15/137982.html
三天过后,总算赶出了THINControls.WebControls命名空间的两名新丁:
ValidateTextBox;AutoFlexTextBox。
请认真查看以下控件说明:
ValidateTextBox是完全独立于官方验证控件的一组加强验证功能的TextBox,控件都提供两重控制:输入时判断输入的字符是否合法,页布提交时再次进行语法完整性、正确性验证。本组控件可完美与官方的验证控件并存,并提供TextChanged事件响应和AutoPostBack支持(.net 1.0官方验证控件是不支持TextBox回传时检测的,.net 1.1我还没有时间去做测试,不过你在使用了官方验证控件的同时,使用了本组控件,则会自动更正微软的错误。)
由于微软的验证控件在验证通过后很霸道的提交事件,所以一般的做法会造成它的验证通过直接Sumbit,而使别的验证失效,解决此问题和AutoPostBack时的问题花了我一个早上的时间,大家可以看看控件生成的代码,看看我的解决方法和思路。
ValidateTextBox当前版本集成以下验证和控制:
TextValidType:
Int, //123/+123/-123
PositiveInt, //+123/123
NegativeInt, //-123
Float,// 111.111/+11.11/-11.11
PositiveFloat,// +11.111/11.111
NegativeFloat,// -111.111
Email,// abc@bcd.com
URL,/ /http://...
Color,//#aabbcc
Chinese,//中文
ASCII,//半角字符
ZipCode,//邮编
Tel,//座机(只能是中国的)
Mobile,//手机
ImageFile,//图片文件URL
ZipFile,//ZIP文件URL,RAR
Date,//日期
Capitalize,//首字字大写
Uppercase,//转换成大写
Lowercase,// 转换成小写
Time,//时间
IPAdress//10.1.0.21
所有验证可同时提供字数控制:
IsLimitLength开启字数控制,CountLengthMode可设一个全角字符算一个字还是两个字,MinLength最少多少字,0以上就可以当RequiredFieldValidator用了,MaxLenth最多多少字,0为无限制。
AutoPostBack开启自动回传
Text设置TextBox的文字。
ErrorMessage设置出错时的提示。
MessageStyle设置ErrorMessage的显示样式,如果设了ErrorMessage而没有显示,请看看这里设好没有。
TextboxStyle,TextBox的样式。
OuterStyle,设置控件外框的样式。
EnableClientScript设为false可以把控件变成一个普通的TextBox。
AutoFlexTextBox 只是一个简单的多行文本域,可以自动根据内容伸缩,可以设定伸编的最大限度,此控件创意来源于网上,不记得是哪位仁兄的了,特此说明。
MaxHeight最大高度。
请关注本Blog的计划和动向。
请提出本控件组的改进建议,特别是验证Type的扩展,非常感谢。
用以下方法试用一下,可快速预览功能:
if(!IsPostBack)
{
THINControls.WebControls.THINTextBox.ValidateTextBox valid;
for(int i = 0 ; i < 22 ; i ++)
{
valid = new THINControls.WebControls.THINTextBox.ValidateTextBox();
valid.CountLengthMode = THINControls.WebControls.THINTextBox.LengthMode.BigCharEqualTwo;
valid.ID = "valid" + i.ToString();
valid.MinLength = 5;
valid.MaxLength = 20;
valid.TextValidType = (THINControls.WebControls.THINTextBox.ValidType)i;
valid.IsLimitLength = true;
valid.ErrorMessage = ((THINControls.WebControls.THINTextBox.ValidType)i).ToString();
PlaceHolder1.Controls.Add(valid);
}
}
楼下兄弟说会失效,你看看这个图: