unsafe_where_true
unsafe_where_true

Reputation: 6300

jquery datetimepicker fails when setting the minDate with time

$('#altdate').datetimepicker({
        timeFormat: 'hh:mm:ss',
        dateFormat: 'yy-mm-dd',
        altField: "#Event_datetime",
        altFormat: "yy-mm-dd",
        altTimeFormat: 'hh:mm:ss',
        altFieldTimeOnly: false,
        onClose: function( selectedDate ) {
            //alert(selectedDate);
            $( "#altenddate" ).datetimepicker( "option", "minDate", selectedDate );
            if (selectedDate < ($.datepicker.formatDate('yy-mm-dd', new Date())) ) {
                start_in_past = true;
            }
        }
    });

$('#altenddate').datetimepicker({
        timeFormat: 'hh:mm:ss',
        dateFormat: 'yy-mm-dd',
        altField: "#Event_enddatetime",
        altFormat: "yy-mm-dd",
        altTimeFormat: 'hh:mm:ss',
        altFieldTimeOnly: false,
        onClose: function( selectedDate ) {
            //alert(selectedDate);
            $( "#altdate" ).datetimepicker( "option", "maxDate", selectedDate );
        }
    });

The #Event_datetime field correctly gets filled with the value "2012-12-23 13:00:00" when I leave the datetimepicker field; however, when I close the enddate one, the line

$( "#altdate" ).datetimepicker( "option", "maxDate", selectedDate );

only sets "2012-12-23" on the field! using "maxDateTime" as option also does not work, getting maxDateTime.getFullYear is not a function.

How to set the maxDate(Time) with the full string as requested by the client: yy-mm-dd hh:mm:ss

Upvotes: 2

Views: 2620

Answers (2)

Stephan B
Stephan B

Reputation: 837

I had the same problem as you, only without using an alt field. Your solution worked for me as well, though I had to code it slightly differently.

var current = $("#startDate").datetimepicker("getDate");
$("#startDate").datetimepicker( "option", "maxDate", selectedDate );
$("#startDate").datetimepicker( "setDate", current);

(I realize I could have posted this as a comment, but I needed to format the code sample.)

Upvotes: 1

unsafe_where_true
unsafe_where_true

Reputation: 6300

So the problem really is that setting the "maxDate" option, the actual hidden field #Event_datetime gets reset to without time - no idea why.

So I solved it by saving temporarily the #Event_datetime variable before calling to set maxDate and resetting it again...

var current = $('#Event_datetime').val();
$( "#altdate" ).datetimepicker( "option", "maxDate", selectedDate );
$('#Event_datetime').val(current);

Upvotes: 3

Related Questions