Visual FoxPro 內建遮罩文字框功能強大。Web 端現有方案(如 stedy.com)採用客戶端 VBScript 格式化:輸入時即時格式化顯示,失敗顯示錯誤訊息(如 # INVALID DATE ENTERED #)。
function maskDate(sValue, sType) {
dim zMonth = array("January", "February", ...);
if len(trim(sValue)) = 0 then maskDate = "" : setViewState false
elseif not(isDate(sValue)) then maskDate = "# INVALID DATE ENTERED #" : setViewState true
else
select case sType
case "medium": maskDate = day(...) & "-" & left(zMonth(month(...)-1),3) & "-" & year(...)
case "long": maskDate = zMonth(month(...)-1) & " " & day(...) & ", " & year(...)
case else: maskDate = formatDateTime(sValue, vbShortDate)
end select
setViewState false
end if
end function
maskType:遮罩格式類型(日期、貨幣、SSN 等)realValue:未格式化的原始值(如 ¥30.00 → 30.00)解決方案:隱藏欄位儲存 realValue,表單送出時自動回傳。
protected override void Render(HtmlTextWriter output) {
// 隱藏欄位儲存真實值
output.WriteBeginTag("input");
output.WriteAttribute("type", "hidden");
output.WriteAttribute("value", "");
output.WriteAttribute("id", "__" + this.UniqueID);
output.WriteAttribute("name", "__" + this.UniqueID);
output.Write(HtmlTextWriter.TagRightChar);
base.Render(output); // 輸出原本的文字框
}
realValue 隱藏欄位