2012-04-15 102 views
-1

我正在用JavaScript写一个生日验证表单,但它不起作用。你能帮忙找出哪一部分是错的吗?如何解决它?日期验证JavaScript

的JavaScript

function onFormSubmit(form_element) { 

    var slashcount = 0; 
    if ((form_element.birthday.value =="")||(form_element.birthday.value ==null)) 
    { 
     alert("This field is required. Please enter date mm/dd/yyyy!"); 
     false; 
    } 
    for (var i=0; i < birthday.length; i++) 
    { 
     temp = "" + birthday.substring(i, i+1); 
     if (temp == "/") 
     { 
      slashcount++; 
     } 
     if (valid.indexOf(temp) == "-1") 
     { 
      alert("error1."); 
      false; 
     } 
     if (slashcount != 2) 
     { 
      alert("error2"); 
      false; 
     } 
     if((birthday.charAt(2)!= '/')||(birthday.charAt(5) != '/')) 
     { 
      alert("error3"); 
      false; 
     } 
    } 
    return true; 
}​ 

HTML

<form onsubmit="return onFormSubmit(this)"> 

     Birthday:<input type="text" name="birthday" /><br /> 
     <input type="submit" value="submit" /> 
</form> 
+2

使用调节表达! – epascarello 2012-04-15 12:00:15

+0

我该怎么做? – user1332075 2012-04-15 12:03:22

+0

搜索该网站或使用您最喜爱的搜索引擎进行日期验证正则表达式JavaScript。 – epascarello 2012-04-15 12:20:10

回答

0

首先,应该有return false;,而不是仅仅false;

+0

它不会改变。当我不写任何日期时,它会给出警报,但是当我写121313时不会给出任何错误或32/12/2002不会给出任何错误。 – user1332075 2012-04-15 11:57:19

+0

我改变了它,但没有改变。当我给出无效日期如12或12/14/2002时,它不会给出任何错误。 – user1332075 2012-04-15 12:10:38

0

阵列= date.split( '/'); 如果日期正确,您会得到三个值。你可以做任何你想做的事情。

array=date.split('/'); 
if(array.length!=3) 
{ 
alert('Not a valid date'); 
return false; 
} 
if(parseInt(array[0])>31) 
{ 
alert('Not a valid day'); 
return false; 
} 
etc etc. 
+0

你能告诉我该怎么做吗?非常感谢你。 – user1332075 2012-04-15 12:05:49

+0

你想在验证中做什么? – Anil 2012-04-15 12:08:20

+0

dd/mm/yyyy有效。否则,它应该会给出错误。 – user1332075 2012-04-15 12:12:07

0

使用更容易的正则表达式。

把你的码本:

日期格式如下:毫米/日/年

^(0 [1-9] | 1 [012]) - /.- /.\d \ d $