2013-06-24 2 views
1

Привет всем Я сделал скрипт для проверки формы, все, что мне нужно сделать, это проверить, что дата не в прошлом. Я использовал набор substr, но он, похоже, не работает, пожалуйста, кто-то может помочь. ниже мой код, дата - часть внизу.Подтверждение по дате javascript, если дата введена в прошлом

function validateForm() { 
// this part of the script will collate all errors into one should the user leave an input blank 
var Fname=document.forms["myForm"]["fname"].value; 
var Lname=document.forms["myForm"]["lname"].value; 
var address=document.forms["myForm"]["addr1"].value; 
var postcode=document.forms["myForm"]["pcode"].value; 
var email=document.forms["myForm"]["email"].value; 
var number=document.forms["myForm"]["tel"].value; 
var date=document.forms["myForm"]["mydate"].value; 
if (Fname==null || Fname=="" ||Lname==null || Lname=="" ||address==null || address=="" ||!postcode||!email||!number||(myForm.sex[0].checked == false) && (myForm.sex[1].checked == false)||(myForm.age[0].checked == false)&&(myForm.age[1].checked == false)&&(myForm.age[2].checked == false)&&(myForm.age[3].checked == false)&&(myForm.age[4].checked == false)||!date) 
    { 
    alert("Please make sure all fields are filled or checked correctly out "); 
    return false; 
    } 
    //end of collating script 
    //start of postcode script 
var regPostcode = /^[a-zA-Z]{1,2}\d[\dA-Za-z]? \d[a-zA-Z]{2}$/; 
if (!postcode.match(regPostcode)) 
{ 
    alert("That Post Code is incorrect, correct way mk4 4tr"); 
    return false; 
} 
//end of postcode script 
//start of email script 
var regEmail =/^\[email protected]\S+\.\S+$/; 

if (!email.match(regEmail)) 
{ 
    alert("That email is incorrect"); 
    return false; 
} 


// end of email script 
// start of phone number script 
var phonestring = /^(?:0|\+44)[12378]\d{8,9}$/; 
if (!number.match(phonestring)) 
{ 
    alert(" incorrect,correct format 01908234874"); 
    return false; 
} 
// end of phone script 
//start of gender script 

if ((myForm.sex[0].checked == false) && (myForm.sex[1].checked == false)) 
{ 
alert ("Please choose your Gender: Male or Female"); 
return false; 
} 
// end of gender script 
//start of age group script 
if((myForm.age[0].checked == false)&&(myForm.age[1].checked == false)&&(myForm.age[2].checked == false)&&(myForm.age[3].checked == false)&&(myForm.age[4].checked == false)){ 
alert("please select an age group"); 
return false; 
} 
// end of age script 
//start of datefield 
var dateformat=/^(?:(?:31\/(?:0[13578]|1[02])|(?:29|30)\/(?:0[13-9]|1[012])|(?:0[1-9]|1\d|2[0-8])\/(?:0[1-9]|1[0-2]))\/[2-9]\d{3}|29\/02\/(?:[2-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[3579][26])00))$/; 
if (!date.match(dateformat)) 
{ 
    alert("format incorrect use dd/mm/yyyy make sure you are entering correct days to the month remember 30 days have september, april, june & november, only 28 days in february unless leap year next is 2016"); 
    return false; 
} 
var today = new Date(); 

var courseYear =string.substr(6,4) // use substr or substring to capture the last four digits 
var courseMonth =string.substr(3,2) // use substr or substring to capture the four and fifth digits 
var courseDay = string.substr(0,2)// use substr or substring to capture the first and second digits 

var dateToCompare = new Date(courseYear, courseMonth, courseDay); 

if (dateToCompare < today) { 
alert("this date is in the past"); 
return false; } 

//end of date field 
else 
{ alert(" Thank you a member of our team will get back to you shortly"); 

return true;} 
} 
+1

Почему вы не используете jqueryui date-plugin? –

+0

Вы также можете взглянуть на moment.js: http://momentjs.com/ – fero

+0

@Jigar: Описание тега JS гласит: «Если используется библиотека или фреймворк, то помечайте вопрос соответствующими тегами« _, нет тега jQ, так что это может быть причиной того, почему OP не использует плагин –

ответ

2

Это выглядит не так:

var courseYear = string.substr(6,4) // use substr or substring to capture the last four digits 
var courseMonth = string.substr(3,2) // use substr or substring to capture the four and fifth digits 
var courseDay = string.substr(0,2)// 

Оно должно быть:

var courseYear =date.substr(6,4); 
var courseMonth =date.substr(3,2); 
var courseDay = date.substr(0,2); 

В противном случае это прекрасно: http://jsfiddle.net/balintbako/mKmaE/

Вы все еще можете рассмотреть возможность использования Плагин jquery для проверки формы.

+0

О да, я вижу, что я сделал не так, спасибо, я дам, что go должен мой var today = new Date be date = "24/06/2014? – adam

+0

или' var parts = date.split («/»), курсYear = parts [2]; courseMonth = parseInt (части [1], 10); courseDay = parseInt (части [0], 10); ' – mplungjan

+0

' new Date() 'без аргументов возвращает всегда текущая дата – xmashallax

0

Не уверен, что регулярное выражение является самым простым способом проверки даты. Рассмотрим ответ здесь: Test if date is valid.

После того, как вы превратили строку в объект даты (2 строки кода) вы можете проверить, если это в прошлом с помощью:

if (d < new Date()) { 
    // date is in the past 
} 

Я не думаю, что есть какое-либо значение, настаивая на ватных значений для даты и месяца, конечно, достаточно d/m/yyyy?

0
 $split_array = ($('#MyText_input_1').val());//alert($split_array); 
     //ex. 31-Oct-2013 
     /*** past date validation script ***/ 
     var c = $split_array[0]; // this is the format of the date coming in. 
     var temp = new Array(); 
     temp = c.split('-'); 

     var x = new Date (temp[1]+" "+temp[0]+", "+temp[2]); 
     //alert((new Date().getTime())); 
     if (x.getTime() < (new Date().getTime())) { 
      alert('past date'); 
      return false; 
     } 
     /*** end script ***/