- 爱易网页
 
                        - 
                            ASP.NET教程
 
                        - 一个类似于Calendar日期控件,不用再刷新页面。 
 
                         
                    
                    
                    日期:2011-02-17  浏览次数:20546 次 
                    
                        
                        
            1. 一个类似于Calendar日期控件,不用再刷新页面。 
2. 判断文本控件里的值是否能转换成日期型。 
.htc 例1: 
/* 
*xpMask.htc 
* 
*/ 
//------------------------------------------------------------------------------------------------------ 
<PUBLIC:COMPONENT 
lightWeight=false 
> 
<PUBLIC:DEFAULTS 
contentEditable=false 
tabStop=true 
/> 
<PUBLIC:attach event="ondocumentready" onevent="initCoolMask()" /> 
<PUBLIC:attach event="ondetach" onevent="cleanupCoolMask()" /> 
<PUBLIC:property name="maskType" value="" /> 
<PUBLIC:property name="realValue" value="" /> 
<PUBLIC:property name="toolTipStr" value="" /> 
<script language="VBScript"> 
sub initCoolMask() 
attachEvent "onreadystatechange", GetRef("coolMaskInputBlur") 
attachEvent "onfocus", GetRef("coolMaskInputFocus") 
attachEvent "onblur", GetRef("coolMaskInputBlur") 
coolMaskInputBlur 
end sub 
sub cleanupCoolMask() 
detachEvent "onreadystatechange", GetRef("coolMaskInputBlur") 
detachEvent "onfocus", GetRef("coolMaskInputFocus") 
detachEvent "onblur", GetRef("coolMaskInputBlur") 
end sub 
sub coolMaskInputFocus() 
with element 
if not .realValue = "" then .value = .realValue 
.select() 
end with 
end sub 
sub coolMaskInputBlur() 
with element 
select case ucase(.maskType) 
case "DATETIME" 
.realValue = .value 
.value = maskDatetime(.value) 
.toolTipStr = .ToolTip 
case "SHORTDATE" 
.realValue = .value 
if maskDate(.value, "short") = formatDateTime("1900-1-1 0:00:00", vbShortDate) then 
.value = "" 
.toolTipStr = "Format: yyyy-mm-dd " 
else 
.value = maskDate(.value, "short") 
if not .realValue = "" then 
.toolTipStr = "Format: "&.realValue 
else 
.toolTipStr = "Format: yyyy-mm-dd " 
end if 
end if 
.title =.toolTipStr 
case "MEDIUMDATE" 
.realValue = .value 
.value = maskDate(.value, "medium") 
case "LONGDATE" 
.realValue = .value 
.value = maskDate(.value, "long") 
case "ZIPCODE" 
.realValue = parseChar(.value, array(" ", "-")) 
.value = maskZip(.value) 
case "PHONE" 
.realValue = parseChar(.value, array(" ", "(", ")", "-", ".")) 
.value = maskPhone(.value) 
case "PERCENT" 
.realValue = parseChar(.value, array(" ", "%")) 
.value = maskPercent(.value) 
case else 
.realValue = .value 
end select 
end with 
end sub 
function parseChar(sStr, sChar) 
dim i, zChar, sNewStr 
if typeName(sChar) = "string" then zChar = Array(sChar) else zChar = sChar 
sNewStr = sStr 
for i = lBound(zChar) to uBound(zChar) 
sNewStr = replace(sNewStr, cstr(zChar(i)), "") 
next 
parseChar = sNewStr 
end function 
function setViewState(bState) 
with element 
if not bState then 
.runtimeStyle.color = .style.color 
else 
.runtimeStyle.color = "red" 
end if 
end with 
end function 
function maskDate(sValue, sType) 
if IsNumeric(sValue) then 
'sValue = parseChar(sValue, array(" ", "-", "/", ",", ".", "\", "^", "&", "*", "@", "~", "`", "'", "!", "#", "$", "%", "|", "(", ")", "+", "_", "=", ";", "?", ":", "{", "}", "[", "]", "<", ">")) 
if len(sValue) = 8 then sValue = left(sValue, 4) & "-" & left(right(sValue, 4), 2) & "-" & right(right(sValue, 4), 2) 
if len(sValue) = 6 then sValue = left(sValue, 4) & "-0" & left(right(sValue, 2), 1) & "-0" & right(right(sValue, 2), 1) 
end if 
dim zMonth 
zMonth = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") 
if len(trim(sValue)) = 0 then 
maskDate = "" 
setViewState false 
elseif not(isDate(sValue)) then 
maskDate = "DATE ERROR" 
setViewState true 
else