各位老大帮忙看看这个javascript该怎么写呢?

enhanwei 2003-10-17 09:39:01
我想让用户在文本框txtDate中自己输入日期,但是要求输入日期格式必须为
“2003.03.03”,如果不是提示错误,不知道该怎么写,请各位老大帮忙了,我
想把这个放在客户端验证!!
...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyp503 2003-10-18
  • 打赏
  • 举报
回复
使用javascript

<script language=javascript>
function formatDate(sDate, arrValidFormats, iReturnFormat)
{
var sFormated = "";
sDate = trim(sDate);
var s="";
s=validateDate(sDate,"Datum",arrValidFormats,true);


if(s!=("- " + "Datum" + sErrIsEmpty) && s!=("- " + "Datum" + sErrValidateDate + ".\n" ) && sDate.length>0)
{
var rgExp, sValidDate, sReturnDate;

// Get the format of the sDate - global variable that validateDate saves in
sValidDate = g_sLastValidDateFormat;

var iYearLen = (sValidDate.lastIndexOf("Y") != -1) ? sValidDate.lastIndexOf("Y") - sValidDate.indexOf("Y") + 1 : 0;
var iMonthLen = (sValidDate.lastIndexOf("M") != -1) ? sValidDate.lastIndexOf("M") - sValidDate.indexOf("M") + 1 : 0;
var iDateLen = (sValidDate.lastIndexOf("D") != -1) ? sValidDate.lastIndexOf("D") - sValidDate.indexOf("D") + 1 : 0;

var iYear = sDate.slice(sValidDate.indexOf("Y"), sValidDate.indexOf("Y") + iYearLen);
var iMonth = sDate.slice(sValidDate.indexOf("M"), sValidDate.indexOf("M") + iMonthLen);
var iDate = sDate.slice(sValidDate.indexOf("D"), sValidDate.indexOf("D") + iDateLen);

// If parameters are nulluse the global ones
if(arrValidFormats == null)
arrValidFormats = g_arrValidDateFormats;
if(iReturnFormat == null)
iReturnFormat = g_iValidDateReturnFormat;

// Get the format to format to
sReturnDate = arrValidFormats[iReturnFormat];

var iYearLen2 = (sReturnDate.lastIndexOf("Y") != -1) ? sReturnDate.lastIndexOf("Y") - sReturnDate.indexOf("Y") + 1 : 0;
var iMonthLen2 = (sReturnDate.lastIndexOf("M") != -1) ? sReturnDate.lastIndexOf("M") - sReturnDate.indexOf("M") + 1 : 0;
var iDateLen2 = (sReturnDate.lastIndexOf("D") != -1) ? sReturnDate.lastIndexOf("D") - sReturnDate.indexOf("D") + 1 : 0;

if(iYearLen == 2 && iYearLen2 == 4) // Fix year if only two numbers
{
if(iYear > 50)
iYear = "19" + iYear;
else
iYear = "20" + iYear;
}

// If some of the values don't exist, use todays...
if(iYear.length == 0) // Fix year if only two numbers
{
iYear = new Date().getUTCFullYear() + "";
iYearLen = iYear.length;
}
if(iMonth.length == 0) // Fix year if only two numbers
{
iMonth = (new Date().getUTCMonth() + 1) + "";
if(iMonth.length == 1)
iMonth = "0" + iMonth;
iMonthLen = iMonth.length;
}
if(iDate.length == 0) // Fix year if only two numbers
{
iDate = new Date().getUTCDate() + "";
if(iDate.length == 1)
iDate = "0" + iDate;
iDateLen = iDate.length;
}

// Replace Y's, M's and D's with the sent in year, month, date
if(iYearLen2)
{
if((iYearLen - iYearLen2) >= 0)
iYear = iYear.slice(iYearLen - iYearLen2);
rgExp = new RegExp("Y{" + iYearLen2 + "}");
sReturnDate = sReturnDate.replace(rgExp, iYear);
}
if(iMonthLen2)
{
if((iMonthLen - iMonthLen2) >= 0)
iMonth = iMonth.slice(iMonthLen - iMonthLen2);
rgExp = new RegExp("M{" + iMonthLen2 + "}");
sReturnDate = sReturnDate.replace(rgExp, iMonth.slice(iMonthLen - iMonthLen2));
}
if(iDateLen2)
{
if((iDateLen - iDateLen2) >= 0)
iDate = iDate.slice(iDateLen - iDateLen2);
rgExp = new RegExp("D{" + iDateLen2 + "}");
sReturnDate = sReturnDate.replace(rgExp, iDate.slice(iDateLen - iDateLen2));
}

sFormated = sReturnDate;
}
else if(sDate.length > 0)
sFormated = sErrFormat;

return sFormated;
}

</script>

使用说明

<INPUT TYPE="text"
onBlur="this.value = formatDate(this.value,
new Array('YYYY.MM.DD'),
0)">
tohen 2003-10-18
  • 打赏
  • 举报
回复
S_Userid.Focus
Abac 2003-10-17
  • 打赏
  • 举报
回复
用客户端的小控件,让用户选择,而不是直接输入,日历小控件很多,你稍微修改以下,把返回的日期字符串变成你要的格式就可以了。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧