新聞中心
掩碼編輯功能的必要性

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出永定免費做網(wǎng)站回饋大家。
在 HTML 中,接受輸入數(shù)據(jù)的唯一方式是使用 標記。在 ASP.NET 中,只是使用 TextBox 控件對輸入標記進行了封裝。此控件存在的一個問題是:它并不限制用戶可以在其中鍵入的內(nèi)容。但是,通過使用少量的 JavaScript 代碼,您可以篩選掉不需要的文本。這就是上個月所介紹的內(nèi)容。這個月我將添加掩碼編輯功能,該功能允許在鍵入字符時對其進行篩選,并允許字符以區(qū)域特定格式顯示。掩碼編輯功能可用于篩選、驗證、自動設(shè)置格式和本地化。還可將該功能應用于許多真實數(shù)據(jù)類型,包括日期、貨幣、時間、郵政編碼、電話號碼、社會保險號碼或增值稅 ID 等。在 AJAX 控件工具包中,MaskedEdit 擴展器是一個免費組件,將其附加到 TextBox 控件后,您便可以對許多常見情況下的輸入行為進行控制。
MaskedEdit 擴展器
在 AJAX 控件工具包中,MaskedEdit 擴展器支持 MaskEditType 枚舉類型所指定的某些數(shù)據(jù)格式:2008年度***技術(shù)圖書與原創(chuàng)作者評選頒獎典禮
public enum MaskedEditType
{
None,
Date,
Number,
Time,
DateTime
}
|
您可以使用該擴展器輸入數(shù)字、日期、時間和日期/時間。擴展器根據(jù)給定的區(qū)域性設(shè)置來決定輸出格式。以下代碼段顯示了對接受日期輸入的文本框使用 MaskedEdit 擴展器的典型方式:
<asp:TextBox runat="server" ID="TextBox1" /> |
圖 A 所列。主要通過兩個屬性來定義輸入掩碼:Mask 和 MaskType。Mask 的默認值為 "",用于指定擴展器可接受的字符的掩碼。MaskType 的默認值為 "",用于使用 MaskedEditType 枚舉所定義的任意值來指示掩碼類型。
FigureAMaskedEdit 擴展器屬性
|
屬性 |
默認值 |
說明 |
|
AcceptAMPM |
False |
一個布爾屬性,用于指示是否應使用 AM/PM 符號。 |
|
AcceptNegative |
None |
指示是否允許使用負號 (-)。來自 MaskedEditShowSymbol 枚舉的可用值包括:None、Left 和 Right。 |
|
AutoComplete |
True |
一個布爾屬性,用于指示是否必須自動填寫用戶未指定的空掩碼字符。 |
|
AutoCompleteValue |
"" |
指示在啟用 Autocomplete 時要使用的默認字符。 |
|
Century |
1900 |
指示當年份的日期掩碼僅有兩位數(shù)字時要使用的世紀。 |
|
ClearMaskOnLostFocus |
True |
一個布爾屬性,用于指示當文本框失去輸入焦點時是否刪除掩碼。 |
|
ClearTextOnInvalid |
False |
一個布爾屬性,用于指示當用戶輸入無效文本時是否清除文本框。 |
|
ClipboardEnabled |
True |
一個布爾屬性,用于指示是否允許使用剪貼板進行復制/粘貼。 |
|
ClipboardText |
Your browser security settings don't permit the automatic execution of paste operations(瀏覽器的安全設(shè)置不允許自動執(zhí)行粘貼操作) |
指示在執(zhí)行剪貼板粘貼操作時要使用的提示文本。 |
|
CultureName |
"" |
獲取并設(shè)置要使用的區(qū)域性設(shè)置的名稱。 |
|
DisplayMoney |
None |
指示是否顯示貨幣符號。來自 MaskedEditShowSymbol 枚舉的可用值包括:None、Left 和 Right。 |
|
ErrorTooltipCssClass |
"" |
獲取并設(shè)置工具提示消息的 CSS 類。 |
|
ErrorTooltipEnabled |
False |
一個布爾屬性,用于指示當鼠標懸停在內(nèi)容無效的文本框上方時,是否顯示工具提示消息。 |
|
Filtered |
"" |
獲取并設(shè)置在指定“C”占位符時掩碼類型的有效字符列表。 |
|
InputDirection |
LeftToRight |
指示文本輸入方向。來自 MaskedEditInputDirection 枚舉的可用值包括:LeftToRight 和 RightToLeft。 |
|
Mask |
"" |
指定擴展器可接受的字符的掩碼。 |
|
MaskType |
"" |
使用 MaskedEditType 枚舉所定義的任意值來指示掩碼類型。 |
|
MessageValidatorTip |
True |
一個布爾屬性,用于指示當用戶在文本框中鍵入內(nèi)容時是否顯示幫助消息。 |
|
OnBlurCssNegative |
"" |
獲取并設(shè)置當文本框失去輸入焦點且包含負值時所使用的 CSS 類。 |
|
OnFocusCssClass |
"" |
獲取并設(shè)置當文本框獲取到輸入焦點時所使用的 CSS 類。 |
|
OnFocusCssNegative |
"" |
獲取并設(shè)置當文本框獲取到輸入焦點且包含負值時所使用的 CSS 類。 |
|
OnInvalidCssClass |
"" |
獲取并設(shè)置當文本無效時所使用的 CSS 類。 |
|
PromptCharacter |
_ |
獲取并設(shè)置要為未指定的掩碼字符使用的提示字符。 |
|
UserDateFormat |
None |
指示特定的日期格式??捎弥涤?MaskedEditUserDateFormat 枚舉定義。 |
|
UserTimeFormat |
None |
指示特定的時間格式。可用值由 MaskedEditUserTimeFormat 枚舉定義。 |
MaskType 屬性通知擴展器目標控件將接受某個特定數(shù)據(jù)類型。Mask 屬性(字符串類型)指示表示文本框的有效輸入的字符序列。例如“12/6/07”和“12-09-2007”都是有效的日期,但它們使用不同的輸入掩碼。
要生成掩碼,需使用預定義的符號作為占位符。圖 1 列出了所支持的符號。例如,“999,999.99”掩碼會使代碼接受帶有小數(shù)點的數(shù)字,至多有一個千位分隔符。圖 2 顯示了使用掩碼編輯器擴展的文本框所顯示的最終用戶界面。貨幣符號的外觀由 DisplayMoney 屬性來控制,并會提示用戶必須鍵入的每個字符。默認提示符為下劃線,不過您可以通過 PromptCharacter 屬性來更改提示符。
Figure1輸入掩碼預定義的占位符
|
符號 |
說明 |
|
9 |
數(shù)字字符 |
|
L |
字母 |
|
$ |
字母或空格 |
|
C |
通過 Filtered 屬性定義的自定義寫字符,區(qū)分大小 |
|
A |
通過 Filtered 屬性定義的字母或自定義字符 |
|
N |
通過 Filtered 屬性定義的數(shù)字或自定義字符 |
|
? |
任意字符 |
|
/ |
日期分隔符,取決于當前區(qū)域性設(shè)置 |
|
: |
時間分隔符,取決于當前區(qū)域性設(shè)置 |
|
. |
小數(shù)點,取決于當前區(qū)域性設(shè)置 |
|
, |
千位分隔符,取決于當前區(qū)域性設(shè)置 |
|
|
轉(zhuǎn)義字符 |
|
{ |
重復掩碼的起始符 |
|
} |
重復掩碼的終止符 |
圖 2運行中的 MaskedEdit 擴展器
對于日期,還可以使用 AcceptAMPM、Century 等其他屬性,甚至可以使用 MaskedEditUserDateFormat 枚舉中指定的預定義格式之外的自定義用戶格式,如下所示:
public enum MaskedEditUserDateFormat
{
None,
DayMonthYear,
DayYearMonth,
MonthDayYear,
MonthYearDay,
YearDayMonth,
YearMonthDay
}
|
影響 MaskedEdit 擴展器所應用的格式的許多設(shè)置都繼承自當前區(qū)域性設(shè)置。CultureName 屬性指示要應用的區(qū)域性設(shè)置。請注意,此設(shè)置將覆蓋通過 @Page 指令中的 UICulture 屬性為頁面定義的區(qū)域性設(shè)置。
#p#
驗證掩碼輸入
雖然掩碼擴展器提供有動態(tài)格式設(shè)置功能,但是還有另外一個組件(掩碼驗證器)可確保將輸入的任何文本都解析為預期類型:
<act:MaskedEditValidator |
圖 B 列出了該驗證器公開的屬性。掩碼文本框的 Text 屬性返回帶格式的文本。對于日期,該屬性返回類似于“02/04/2007”的文本;而對于數(shù)字輸入字段,該屬性返回類似于“1,200.00”的文本。即使在頁面上對用戶顯示了貨幣符號,Text 屬性中也不包括貨幣符號。
FigureBMaskedEditValidator 屬性
|
屬性 |
說明 |
|
AcceptAMPM |
指示時間值是否接受 AM/PM。 |
|
ConTRolToValidate |
指示要驗證的文本框的 ID。 |
|
ConTRolExtender |
指示附加到文本框的 MaskedEditExtender 控件的 ID。 |
|
ClientValidationFunction |
獲取并設(shè)置用于自定義驗證的客戶端 JavaScript 函數(shù)的名稱。 |
|
EmptyValueBlurredText |
獲取并設(shè)置當文本框沒有輸入焦點且為空時所顯示的消息。 |
|
EmptyValueMessage |
獲取并設(shè)置當文本框具有輸入焦點但為空時所顯示的消息。 |
|
InitialValue |
獲取并設(shè)置文本框的初始值。 |
|
InvalidValueMessage |
獲取并設(shè)置當文本框具有輸入焦點但內(nèi)容無效時所顯示的消息。 |
|
InvalidValueBlurredMessage |
獲取并設(shè)置當文本框沒有輸入焦點但內(nèi)容無效時所顯示的消息。 |
|
IsValidEmpty |
指示文本框是否可以保留為空。 |
|
MaximumValue |
獲取并設(shè)置輸入的***值。 |
|
MaximumValueBlurredMessage |
獲取并設(shè)置當超出***值且文本框沒有焦點時所顯示的消息。 |
|
MaximumValueMessage |
獲取并設(shè)置當超出***值且文本框有焦點時所顯示的消息。 |
|
MinimumValue |
獲取并設(shè)置輸入的最小值。 |
|
MinimumValueBlurredText |
獲取并設(shè)置當超出最小值且文本框沒有焦點時所顯示的消息。 |
|
MinimumValueMessage |
獲取并設(shè)置當超出最小值且文本框有焦點時所顯示的消息。 |
|
ValidationExpression |
獲取并設(shè)置用于驗證輸入的正則表達式。 |
|
TooltipMessage |
獲取并設(shè)置當文本框具有輸入焦點時所顯示的消息。 |
那么,如何將 Text 返回的值解析為邏輯數(shù)據(jù)類型(日期或小數(shù))呢?可以對 DateTime 和 Decimal 類型使用靜態(tài) Parse 方法。但是必須注意所使用的區(qū)域性設(shè)置。例如,“02/04/2007”可以表示 2 月 4 日(美國區(qū)域性設(shè)置),也可以表示 4 月 2 日(歐洲區(qū)域性設(shè)置)。事實上,并沒有相關(guān)設(shè)置來保證輸入頁所使用的區(qū)域性設(shè)置與服務(wù)器頁所使用的區(qū)域性設(shè)置相匹配。這就存在以下風險:用戶根據(jù)歐洲區(qū)域性設(shè)置來鍵入日期,而將其作為美國區(qū)域性日期進行處理。更糟糕的是,使用意大利小數(shù)和千位分隔符在數(shù)字文本框中輸入的值 1200 可能會導致引發(fā)異常,因為 Decimal 類型的解析器默認使用美國區(qū)域性設(shè)置。讓我們來看看如何變通解決這些問題。
要牢記以下事實:除非顯式設(shè)置 CultureName 屬性,否則擴展器將默認使用 en-US 區(qū)域性設(shè)置。在服務(wù)器上,系統(tǒng)默認使用 Page 類上 UICulture 屬性的值。
在您的 Codebehind 類中,首先獲取反映用戶界面所使用的區(qū)域性設(shè)置的 CultureInfo 對象??梢园凑障旅骘@示的方法繼續(xù)操作:
string culture = "en-us"; |
然后調(diào)用 Parse 方法根據(jù)所選區(qū)域性設(shè)置指定格式提供程序:
NumberFormatInfo numberInfo = info.NumberFormat; |
圖 3 顯示了使用不同的區(qū)域性設(shè)置進行輸入時同一頁面的行為。
圖 3使用不同的區(qū)域性設(shè)置將數(shù)據(jù)解析為 .NET 類型
#p#
文本框自動完成
您肯定對自動完成功能非常熟悉。該功能會根據(jù)輸入的前幾個字符預測用戶正在鍵入的單詞。Internet Explorer 會記錄已在地址欄和表單字段中鍵入的所有字符以自動完成填充。
當然,此功能完全基于瀏覽器,可以通過將 Autocomplete 屬性設(shè)置為 On 或 Off,來打開或關(guān)閉 和


咨詢
建站咨詢
