Visual Basic 8 (2005)WebFormsVisual Studio 2005.NET 2.0中级开发Visual StudioWindows.NETVisual BasicASP.NET
适用于 ASP.NET 的遮罩文本框






3.68/5 (15投票s)
带有遮罩功能的 ASP.NET TextBox 控件

引言
我们都知道,Windows 应用程序中有一个 MaskedTextBox 控件,但在 Web 中,TextBox 没有遮罩功能。这是文本框遮罩问题的解决方案。
它将允许用户仅在预定义的遮罩中插入文本。
背景
像 Telerik 这样的公司正在以 299 美元或更高的价格提供此控件,即使我们拥有知识,为什么要付费?这个问题激励我创建这个控件。
使用代码
关于如何使用文章或代码的简要说明。类名、方法和属性,任何技巧或窍门。
代码块应设置为“Formatted”样式,如下所示
<%@ Register Assembly="MaskingText" Namespace="MaskingText" TagPrefix="cc1" %> <cc1:MaskedText ID="MaskedText1" runat="server" DefaultMask="Phone" Mask="(###) ###-####">(___) ___-____</cc1:MaskedText>
以下是 Web 控件库的代码语法
Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Text Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls <DefaultProperty("Text"), ToolboxData("<{0}:MaskedText runat="server"></{0}:MaskedText>")> _ Public Class MaskedText Inherits System.Web.UI.WebControls.TextBox '# - Numeric '@ - Alphas '? - Any Character Private MaskingChars As New List(Of String)(New String() {"#", "?", "@"}) Private DefaultMasks As New ArrayList(New Object() {"", "###.###.#.###", "(###) ###-####", "###-##-###"}) Private _DefMask As CommonMasks Public Enum CommonMasks None = 0 IPAddress = 1 ' Phone = 2 ' SSN = 3 ' End Enum <Bindable(True), Category("Appearance"), DefaultValue(""), Localizable(True)> Public Overrides Property Text() As String Get Dim s As String = CStr(ViewState("Text")) If s Is Nothing Then Return String.Empty Else Return s End If End Get Set(ByVal Value As String) ViewState("Text") = Value End Set End Property <Bindable(True), Category("Mask"), DefaultValue(""), Localizable(True)> _ Public Property DefaultMask() As CommonMasks Get Return _DefMask End Get Set(ByVal Value As CommonMasks) _DefMask = Value Me.Mask = CStr(DefaultMasks(DirectCast(_DefMask, Integer))) End Set End Property <Bindable(True), Category("Mask"), DefaultValue(""), Localizable(True)> _ Public Property Mask() As String Get Dim s As String = CStr(ViewState("Mask")) If s Is Nothing Then Return String.Empty Else Return s End If End Get Set(ByVal Value As String) If Value <> "" Then Dim tempString As String = System.Text.RegularExpressions.Regex.Replace(Value, "\#|\?|\@", "_") Me.Text = tempString Me.MaxLength = Value.Length + 1 ViewState("Mask") = Value End If End Set End Property Protected Overrides Sub RenderContents(ByVal output As HtmlTextWriter) output.Write(Text) End Sub Private Sub MaskedText_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender Me.Attributes.Add("onkeyup", "processText('" & Me.ClientID & "','" & Me.Mask & "')") Me.Attributes.Add("onkeydown", "return checkKey('" & Me.ClientID & "','" & Me.Mask & "')") Me.Page.ClientScript.RegisterClientScriptResource(GetType(MaskingText.MaskedText), "MaskingText.Mask.js") End Sub End Class Description:
只需设置遮罩属性,用户就可以轻松使用此控件。
需要注意的事项
1. # 符号表示数字字符。
2. @ 符号表示字母字符,而
3. ? 符号表示任何字符。
例如,如果用户想将此文本框遮罩为格式“(123)-(ABC)-(1DE)”
格式字符串将是“(###)-(@@@)-(#@@)”
非常易于使用....!!
不是吗???
关注点
还有预定义的遮罩,例如 IPAddress、Phone 和 SSN,它们会自动格式化文本框。
希望这能帮助我们(Web 开发者)提供一个良好的用户界面。
祝您编程愉快....!! :)