65.9K
CodeProject 正在变化。 阅读更多。
Home

适用于 ASP.NET 的遮罩文本框

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.68/5 (15投票s)

2007年9月21日

CPOL

1分钟阅读

viewsIcon

52960

downloadIcon

573

带有遮罩功能的 ASP.NET TextBox 控件

Screenshot - Mask1.jpg

Shot2

引言


我们都知道,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 开发者)提供一个良好的用户界面。

祝您编程愉快....!! :)

© . All rights reserved.