Pramod
Pramod

Reputation: 2896

validate end date equal to greater than start date

I want to check whether end date is greater than or equal to start date, with jquery validate. It is validating end date greater than start date, but it is not permitting end date equal to start date,

here is my code -

    jQuery.validator.addMethod("greaterThan", 
function(value, element, params) {
    if (!/Invalid|NaN/.test(new Date(value))) {
        return new Date(value) > new Date($(params).val());
    }
    return isNaN(value) && isNaN($(params).val()) 
        || (Number(value) > Number($(params).val())); 
},'Must be greater than {0}.');

jQuery("#collect_and_delivery").validate({ 
        errorElement:'div',               
        rules: {                    
                from:{
                        required:true
                     },
                to:{
                    required:true
                },
                start_date:{
                    required:true
                },
                 end_date:{
                    required:true,
                    greaterThan: "#start_date"              
                }
        },
        messages: {
               from:"Please enter collect address",
               to:"Please enter delivery address",
               start_date:"Please enter shipping collect date",
               end_date:
               { 
                    required:"Please enter shipping delivery date",
                    greaterThan:"Delivery date and Collect date should be proper"
               }
        }                
    }); 

Upvotes: 3

Views: 23393

Answers (2)

user2182143
user2182143

Reputation: 1052

If you want to use simple javascript to compare ethe date. Here is one; simple and easier.

 function compareDate() {
    var str = document.getElementById("start_date").value;
    var end = document.getElementById("end_date").value;
    var year = str.substring(0,4);
    var month = str.substring(5,7);
    var date = str.substring(8,10);
    var endYear = end.substring(0,4);
    var endMonth = end.substring(5,7);
    var endDate = end.substring(8,10);
    var startDate = new Date(year, month-1, date);
    var endDate = new Date(endYear, endMonth-1, endDate);

    if (startDate > endDate) {
      alert('start date should be less than end date');
       return false;
    } 
    else { return true; }
}

Upvotes: 1

Subedi Kishor
Subedi Kishor

Reputation: 5996

You should use is greater than or equal to(>=) in your custom method greaterThan.

Change this line:

return new Date(value) > new Date($(params).val());

To:

return new Date(value) >= new Date($(params).val());

Enjoy...

Upvotes: 2

Related Questions