1

I've managed to cobble together some code for a data range selector in AnyTime:

$(document).ready(function() {
    $("#date_start").AnyTime_noPicker().removeAttr("disabled").AnyTime_picker({format:"%Y-%m-%d",earliest:new Date(2000,0,1,0,0,0)});
    $("#date_end").AnyTime_noPicker().removeAttr("disabled").AnyTime_picker({format:"%Y-%m-%d",earliest:new Date(2000,0,1,0,0,0)});
    var rangeFormat = "%Y-%m-%d";
    var rangeConv = new AnyTime.Converter({format:rangeFormat});
    var oneDay = 60*1*1000;
    $("#date_start").change( function() {
        var fromDay = rangeConv.parse($("#date_start").val()).getTime();
        var ToDay = rangeConv.parse($("#date_end").val()).getTime();
        if (fromDay > ToDay) {
            var ninetyDaysLater = new Date(fromDay + oneDay);
            $("#date_end").AnyTime_noPicker().removeAttr("disabled").val(rangeConv.format(ninetyDaysLater)).AnyTime_picker({
                earliest: ninetyDaysLater,
                format: rangeFormat
            });
        }
    });
    $("#date_end").change( function() {
        var fromDay = rangeConv.parse($("#date_end").val()).getTime();
        var ToDay = rangeConv.parse($("#date_start").val()).getTime();
        if (fromDay < ToDay) {
            var ninetyDaysLater = new Date(fromDay - oneDay);
            $("#date_start").AnyTime_noPicker().removeAttr("disabled").val(rangeConv.format(ninetyDaysLater)).AnyTime_picker({
                earliest: ninetyDaysLater,
                format: rangeFormat
            });
        }
    });
});

... which has the following HTML elements:

<label for="date_start">Start Date of Event</label>
<input type="text" name="date_start" value="" id="date_start" />
<label for="date_end">End Date of Event</label>
<input type="text" name="date_end" value="" id="date_end" />

However, it's giving me errors, and I'm not sure why.

Having poured over similar code on other websites and in the few tutorials I've been able to find, I can't see what's wrong with the code.

When I click on the first date field, I get a slew of errors:

is not in "%Y-%m-%d" format

... which appears twice for line 971 in the code for AnyTime itself (anytime.5.0.1-1403131246.js), followed by three more grouped together for the same line in the same file. I get the same error when I click in the second field. But after that, the code begins to work.

Because I'm unable to isolate the source in my code, I just don't know where to begin with this (I'm in learning mode green for jQuery).

Wayne Smallman
  • 1,690
  • 11
  • 34
  • 56

1 Answers1

0

In the end, the solution was stupid simple; I had to pre-fill the fields with values.

In this case:

"date_start" = date("Y-m-d")

"date_end" = date("Y-m-d", strtotime("+1 day"))

Simple.

Wayne Smallman
  • 1,690
  • 11
  • 34
  • 56