using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace ZHBase.ZHWebControl
{
    [ToolboxData("<{0}:ZHTxtNum runat=\"server\"></{0}:ZHTxtNum>")]
    public class ZHTxtNum : TextBox
    {
        private string _promptMseeage = "";//提示信息
        private string _controlID = "";//控件ID
        private ZHValidateType _validateType = ZHValidateType.不验证;//验证方式

        [Browsable(true)]
        [Description("提示信息")]
        [DefaultValue("")]
        [Category("扩展")]
        public string PromptMseeage
        {
            set { _promptMseeage = value; }
        }
        [Browsable(true)]
        [Description("控件ID")]
        [DefaultValue("")]
        [Category("扩展")]
        public string ControlID
        {
            set { _controlID = value; }
        }
        [Browsable(true)]
        [Description("验证方式")]
        [DefaultValue("")]
        [Category("扩展")]
        public ZHValidateType ValidateType
        {
            set { _validateType = value; }
        }
        public override string Text
        {
            get
            {
                return base.Text;
            }
            set
            {
                base.Text = value.Trim();
            }
        }

        public ZHTxtNum()
        {

        }

        protected override void OnLoad(EventArgs e)
        {
            string strPatternName = "";
            string strPattern = "";
            switch (_validateType)
            {
                case ZHValidateType.非负整数://非负整数(正整数+0)
                    strPatternName = "1";
                    strPattern = @"/^\d+$/";
                    break;
                case ZHValidateType.正整数://正整数
                    strPatternName = "2";
                    strPattern = @"/^[0-9]*[1-9][0-9]*$/";
                    break;
                case ZHValidateType.非正整数://非正整数(负整数+0)
                    strPatternName = "3";
                    strPattern = @"/^((-\d+)|(0+))$/";
                    break;
                case ZHValidateType.负整数://负整数
                    strPatternName = "4";
                    strPattern = @"/^-[0-9]*[1-9][0-9]*$/";
                    break;
                case ZHValidateType.整数://整数
                    strPatternName = "5";
                    strPattern = @"/^-?\d+$/";
                    break;
                case ZHValidateType.非负浮点数://非负浮点数(正浮点数+0)
                    strPatternName = "6";
                    strPattern = @"/^\d+(\.\d+)?$/";
                    break;
                case ZHValidateType.正浮点数://正浮点数
                    strPatternName = "7";
                    strPattern = @"/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/";
                    break;
                case ZHValidateType.非正浮点数://非正浮点数(负浮点数+0)
                    strPatternName = "8";
                    strPattern = @"/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/";
                    break;
                case ZHValidateType.负浮点数://负浮点数
                    strPatternName = "9";
                    strPattern = @"/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/";
                    break;
                case ZHValidateType.浮点数://浮点数
                    strPatternName = "10";
                    strPattern = @"/^(-?\d+)(\.\d+)?$/";
                    break;
                case ZHValidateType.Email地址://Email地址
                    strPatternName = "11";
                    strPattern = @"/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/";
                    break;
                case ZHValidateType.由26个英文字母组成的字符串://由26个英文字母组成的字符串
                    strPatternName = "12";
                    strPattern = @"/^[A-Za-z]+$/";
                    break;
                case ZHValidateType.由26个英文字母的大写组成的字符串://由26个英文字母的大写组成的字符串
                    strPatternName = "13";
                    strPattern = @"/^[A-Z]+$/";
                    break;
                case ZHValidateType.由26个英文字母的小写组成的字符串://由26个英文字母的小写组成的字符串
                    strPatternName = "14";
                    strPattern = @"/^[a-z]+$/";
                    break;
                case ZHValidateType.由数字和26个英文字母组成的字符串://由数字和26个英文字母组成的字符串
                    strPatternName = "15";
                    strPattern = @"/^[A-Za-z0-9]+$/";
                    break;
                case ZHValidateType.由数字或26个英文字母或下划线组成的字符串://由数字或26个英文字母或下划线组成的字符串
                    strPatternName = "16";
                    strPattern = @"/^\w+$/";
                    break;
                case ZHValidateType.不验证://不验证
                    strPatternName = "99";
                    strPattern = @"";
                    return;
                default:
                    break;
            }

            string strJavaScript = @"
                <script language='javascript' type='text/javascript'>
                    function ZHValidate_" + strPatternName + @"(inputString)  
                    {  
                        if (inputString=='')
                        {
                            return;
                        }
                        var txtControl = document.getElementById('" + this._controlID + @"');
                        var pattern=" + strPattern + @";
                        if (!pattern.test(inputString))
                        {
                            txtControl.focus();
                            alert('" + this._promptMseeage + @"');
                        }
                    }                      
                </script>";
            this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "js" + strPatternName, strJavaScript);
            this.Attributes.Add("onblur", "ZHValidate_" + strPatternName + "(value);");
            base.OnLoad(e);
        }
    }
}

 

相关文章: