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

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


咨詢
建站咨詢
