2012-04-15 166 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 $