jtsage / jtsage-datebox

A multi-mode date and time picker for Bootstrap (3&4), jQueryMobile, Foundation, Bulma, FomanticUI, and UIKit (or others)
http://datebox.jtsage.dev/
Other
474 stars 166 forks source link

maxDate option not working properly #507

Open sorinsfirlogea opened 2 years ago

sorinsfirlogea commented 2 years ago

Description The maxDate option does not seem to work properly when using a overrideDateFormat.

HTML

<input type="text" id="invoice_date_label" data-role="datebox" data-datebox-mode="datebox" class="form-control" value="24.01.2022" />
<input type="hidden" id="invoice_date" name="invoice_date" value="2022-01-24" />

Javascript

var elem = "#invoice_date_label";
var linkedField = elem.replace( '_label', '' );`

$(elem).datebox({
      mode: "datebox",
      controlWidth: '220px',
      overrideHeaderFormat: '%A, %d %b %Y',
      useButton: true,
      useFocus: false,
      overrideDateFieldOrder: ['d', 'm', 'y'],
      overrideDateFormat: '%d.%m.%Y',
      theme_modalContainer: 'bg-light border border-dark m-0 rounded',
      theme_openButton: 'primary-light',
      theme_closeBtn: ['check', 'primary'],
      linkedField: [{id: linkedField, format: '%Y-%m-%d'}]
    });
$(elem).datebox({maxDate: '24.01.2022'});

Behavior Although it shouldn't, in the above context the maxDate limit allows to select the date of 25.01.2022, then it starts working as it should. On the contrary, when overrideDateFormat is removed and the values of the HTML element (input_date_label) and the maxDate option are changed to ISO standard (YYYY-MM-DD), the limit works properly.

image image

Desktop:

DateBox Details

jtsage commented 2 years ago

It might take me a couple days to get to actually testing this, but if memory serves, that maxDate has to be in ISO format still. I don't believe it uses the same parse logic that reading / writing the choosen date does, I think it's just a simple split on the dash.

Setting the value in the input box should respect the overrideDateFormat though.

But, I will spin up a test with this as soon as I have some time.

sorinsfirlogea commented 2 years ago

I have also tried with maxDate in ISO format and the overrideDateFormat in %d.%m.%Y format. Same behavior: it allows for one day past the limit, then it begins to work as intended.