发一服务器控件,完全解决文本框限制输入问题(新增在线示例)

        对于文本框限制,经常有人提到很多人用event屏蔽某些键来完成,但是这样会有很多问题,比如只能屏蔽单个字符的输入,浮点数输入了两个小数点时就有些难办了,并且如果选择网页中的一段文字,直接拖进来,也是没办法屏蔽的。

        当然,在IE下有onpropertychange事件,参看我之前写的JS限制文本框只能输入整形或浮点数,然而到了其他浏览器就无能为力了。

        一直想找个解决方案,前两天在蓝色理想看到一篇《认识延迟时间为0的setTimeout》给了我思路,他能用setTimeout为什么我就不能用setInterval,方案应运而生。其实很简单,就是间隔一段时间验证下输入文字,看看是否符合,不符合则删除。代码如下

window.setInterval( function () { document.getElementById('txt1').value = document.getElementById('txt1').value.match(/\d{1,}/)==null ? '' :document.getElementById('txt1').value.match(/\d{1,}/);} , 100 );


       以上代码我想不用过多解释,唯一要解释的就时一个等于null的判断,因为没有null的判断,文本框当为空的时候会显示null,因此加上的,代码间隔100毫秒执行一次。

        经测试,该方法是可行的,于是为了方便调用,封装成了服务器控件,验证模式暂时定义了三种,整数,浮点数以及自定义(欢迎大家提供其他类型的验证正则式)

     /**/ /// <summary>
    
/// 对话框类型枚举
    
/// </summary>

     public   enum  ECheckMode
    
{
        
/**//// <summary>
        
/// 数字
        
/// </summary>

        Number,
        
/**//// <summary>
        
/// 浮点数
        
/// </summary>

        Float,
        
/**//// <summary>
        
/// 自定义
        
/// </summary>

        Custom,
    }

        
        实现控件代码很简单,定义了三个属性:
        1、Text:这个就不用解释了;
        2、CheckMode:选择上面的验证模式;
        3、CustomReg:自定义验证正则表达式,不包含前后两"/"(只有CheckMode在Custom状态下才生效)

        点这里下载,应该一看就懂:)(另外基类定义的属性,只有cssclass、height和width三个有效)

        调用如下:

<% @ Register Assembly="Com.EEShou.Www.TreeControl" Namespace="Com.EEShou.Www.TreeControl"
    TagPrefix
="Tree" 
%>

< Tree:CustomTextBox  ID ="CustomTextBox1"  runat ="server"  CheckMode ="Number"   />




        示例在 这里

转载于:https://www.cnblogs.com/treeyh/archive/2008/05/05/1182975.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值