ASP.NET只允许输入数字的自定义控件

思路:将验证用的javascript封装到控件内,并和该控件的onkeydown绑定,超级简单。

代码如下:

 [DefaultProperty("Text")]
    [ToolboxData("<{0}:TextBoxDigit runat=server></{0}:TextBoxDigit>")]
    public class TextBoxDigit : TextBox
    {
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        { 
            writer.AddAttribute("onkeydown", "handleKey1();");
            base.AddAttributesToRender(writer);
        }
        protected override void OnPreRender(EventArgs e)
        { 
            var str = "  function handleKey1() { \n" +
                        "   var key = event.keyCode;\n" +
                        "   //0-9,backspace,enter,left,right,tab \n" +
                        "   var allKeys = [47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 8, 13,37,39,9];\n" +
                        "   if (!allKeys.contains(key)) {\n" +
                        "       event.returnValue = false;\n" +
                        "   }\n" +
                        " }";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "", str, true);
            base.OnPreRender(e);
        }
    }

原文地址:https://www.cnblogs.com/cnbwang/p/1893842.html