我想验证输入的日期是否为yyyy / mm / dd格式。如果用户输入的是dd / mm / yyyy格式,则必须使用Javascript函数自动转换为yyyy / mm / dd。
编辑:
function CheckDateFormat()
{
EnteredText = document.getElementById('LDate').value;
LengthOfText = EnteredText.length;
Status = true;
for(i=0;i<=LengthOfText;i++)
{
currentChar = EnteredText.substr(i,1);
if (currentChar == '/' && (i != 5 || i != 8))
{
alert("Invalid date format");
document.getElementById('LDate').focus;
status = false;
}
if (status == false)
break;
}
}
答案 0 :(得分:2)
你不能从dd / mm / yyyy或mm / dd / yyyy自动更正,因为例如在03/04/2009这样的日期,人们无法判断人是指dd / mm还是mm / dd。 / p>
所以你唯一能做的就是用regexp来削减支票:
function CheckDateFormat()
{
EnteredText = document.getElementById('LDate').value;
LengthOfText = EnteredText.length;
Status = true;
dformat= /^\d{4}\/\d{1,2}\/\d{1,2}$/
if (dformat.test(EnteredText) == null)
{
alert("Invalid date format");
document.getElementById('LDate').focus;
status = false;
}
if (status == false)
break;
}
答案 1 :(得分:1)
如果您的约束是人们将使用YYYY / MM / DD或DD / MM / YYYY,那么您可以使用它。就像Gnudiff说的那样,没有办法处理MM / DD / YYYY以及DD / MM / YYYY。我真的建议在这个人身上强制使用日历小部件,如果您认为这可能是个问题,则不允许他们输入文本。
function vd(s) {
if (!s) {
//Do whatever you want for an error here
return null;
}
//YYYY/MM/DD
if (s.match(/^((19|20)\d{2})\/(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])$/)) {
return s;
}
//DD/MM/YYYY
if (s.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d{2})$/)) {
var m = /^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d{2})$/.exec(s);
return m[3] + '/' + m[2] + '/' + m[1];
}
//Second error here
return null;
}
答案 2 :(得分:0)
我认为你需要自己编写这样的功能。
验证可以使用正则表达式完成:
〜克里斯
PS:在regexlib.com和google上搜索一些常见的日期验证模式。你不想再发明轮子,是吗?
答案 3 :(得分:0)