2

How to parse if string is valid date. I tried everything in the web, and nothing works. I know that the question is asked multiple times before, but even in the threads that say they solved the problem, does,not work for me. I start to asking myself is there a way at all. I will send my code here. I have three text box: one for day, one for month and year, and on form submit I need to check if they form valid date.

<html> 
  <head> 
  <title>Simple Form Validation</title> 
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
  <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script> 
  <script type="text/javascript">

         jQuery.validator.addMethod(
               "customDateValidator",
                function(value, element) {
                 var concateDate;
                 concateDate= $("#day").val() + "/" + $("#month").val() + "/" + $("#year").val();        

                    var rslt= (Date.parseExact(concateDate, "d/M/yyyy") );
                    if(isNaN(rslt))
                      return false;
                    else
                     return true;               
                    },
                    "Please enter a valid date"
                );
  </script>

  <script type="text/javascript"> 
    $(document).ready(function() { 
      $("#form1").validate({ 
        rules: { 

        year: { 
          customDateValidator: true 
        } 
        }, 
        messages: { 
          year: "Please enter valid datum." 
        } 
      }); 
    }); 
  </script>  

  </head> 

  <body> 
    <form id="form1" method="post" action=""> 
      <div class="form-row"><span class="label">Day *</span><input type="text" name="day" id="day" /></div> 
      <div class="form-row"><span class="label">Month *</span><input type="text" name="month" id="month" /></div> 
      <div class="form-row"><span class="label">Year</span><input type="text" name="year" id="year" /></div> 
      <div class="form-row"><input class="submit" type="submit" value="Submit"></div> 
    </form> 
  </body> 
</html> 

1 Answer 1

4

This is how I'm doing it and it works well.

rules: {
  month: { required: true },
  day: { required: true },
  year: { required: true, date_check: function(){ return $("#month").val()+'/'+$("#day").val()+'/'+$("#year").val() } }
}

jQuery.validator.addMethod("date_check",function(a,b,c){
    month = c.substring(0,2)-1;
    day = c.substring(3,5);
    year = c.substring(6,10);
    mSeconds = (new Date(year, month, day)).getTime();
    objDate = new Date();
    objDate.setTime(mSeconds);
    if(objDate.getFullYear() != year || objDate.getMonth() != month || objDate.getDate() != day) {
        return false;
    }
    return true;
}, "Please provide a valid date.");
Sign up to request clarification or add additional context in comments.

2 Comments

But it doesn't support for globalization. OP is using dd/mm/yyyy and in this answer you're using mm/dd/yyyy.
Then modify it for your use? It's not too difficult.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.