掩碼輸入是一種常用的控件我記得第一次看見這種控件是在Visual FoxPro中!感覺功能強大不錯現在用C#開發aspNET應用程序也需要用到這種輸入的控件便琢磨著自己做一個但是由於Visual FoxPro中的掩碼文本框功能太強了一時還不敢去做網上也有一些自制的如/l但是感覺功能都不很適合後來在上看到了他們做的掩碼文本框感覺這種方式在Web應用上很適合就把客戶端代碼down下來了?╯tedy software 作的是產品要花錢!而且很貴USDft)
分析了一下stedy的客戶端腳本(VBScript)他們為每一種掩碼規則都作了一個客戶端的方法如下面是日期掩碼格式化的客戶端腳本代碼
function maskDate( sValue sType )
dim zMonth
zMonth = array( January February March April May June July August September October November December )
if len( trim( sValue ) ) = then
maskDate =
setViewState false
elseif not( isDate( sValue ) ) then
maskDate = # INVALID DATE ENTERED #
setViewState true
else
select case ( sType )
case medium
maskDate = day( dateValue( sValue ) ) & & left( zMonth( month( dateValue( sValue ) ) ) ) & & year( dateValue( sValue ) )
case long
maskDate = zMonth( month( dateValue( sValue ) ) ) & & day( dateValue( sValue ) ) & & year( dateValue( sValue ) )
case else
maskDate = formatDateTime( sValue vbShortDate )
end select
setViewState false
end ifend function
可以看到處理方式是將文本框中的字符串格式化如果格式化成功則顯示為格式化後的字符串否則顯示# INVALID DATE ENTERED其他的方法與之類似像maskCurrency maskSSN什麼的
MaskTextBox客戶端有兩個自定義屬性
<PUBLIC:property name=maskType value= /><PUBLIC:property name=realValue value= />
第一個是掩碼格式第二個是文本框真實值如¥真實值為
目前遇到的問題有一個
客戶端的文本框如何才能回傳給服務器上面所說的兩個屬性?
想了半天覺著還是用一個Hidden類型的控件儲存掩碼文本框的真實值這樣回傳給服務器的時候就能通過對應的Hidden控件的Value屬性取得真實值!
C# 代碼片段如下
protected override void Render( HtmlTextWriter output )
{
outputWriteBeginTag( input );
outputWriteAttribute( typehidden );
outputWriteAttribute( value );
outputWriteAttribute( id__+
thisUniqueID );
outputWriteAttribute( name__+
thisUniqueID );
outputWrite( HtmlTextWriterTagRightChar );
baseRender( output );
}
From:http://tw.wingwit.com/Article/program/net/201311/13573.html