投递文章投递文章 投稿指南投稿指南 RSS订阅RSS订阅

服务器控件,能够完全解决文本框限制输入问题

来源:cnblogs 发布时间:2008-05-05 收藏 投稿 字体:【

     对于文本框限制,经常有人提到很多人用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" />

最新5条评论 查看所有评论
评论内容:请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名 注册
热门文章
随机推荐
About iTtang - 联系方法  - 专题列表 - 友情链接  -  高级搜索   -  帮助中心  -