[Koha-bugs] [Bug 14060] Remove readonly on date inputs

bugzilla-daemon at bugs.koha-community.org bugzilla-daemon at bugs.koha-community.org
Wed Feb 24 15:48:32 CET 2016


https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=14060

--- Comment #21 from Marc Véron <veron at veron.ch> ---
(In reply to Katrin Fischer from comment #20)
> I'd really like to see this moving forward. So, if I understand correctly,
> the current problem is that the validation is not triggered, when you enter
> the date without using the datepicker?

Hi Katrin,

That seems to be one of the problems, but I think some problems hide other
ones.

I write down som notes I did while playing with the code, just pro memoria.

One finding is that in borrower_debarments.inc, the id manual_restriction_form
is not on the form, but on the fieldset:
 <fieldset class="rows" id="manual_restriction_form">

After moving the form tag, I was able to add a validation to the form,
something like:
            mrform.on("submit",function(e) {
                var testDate = $("#rexpiration").val();
                if (!validate_date( testDate )) {
                    e.preventDefault();
                    return false;
                }
                return true;
            }); 


Then I tweaked is_valid_date(date) to return false if it gets dates like
1.1.2014 etc. (depending on the dateformat syspref), something like:

function is_valid_date(date) {
    var dateformat = dateformat_str = '[% Koha.Preference('dateformat') %]';
    if ( dateformat == 'us' ) {
        if (! date.match('[0-9]{2}/[0-9]{2}/[0-9]{4}') )
            return 0;
        dateformat = 'mm/dd/yy';
        dateformat_str = 'mm/dd/yyyy';
    } else if ( dateformat == 'metric' ) {
        if (! date.match('[0-9]{2}/[0-9]{2}/[0-9]{4}') )
            return 0;
        dateformat = 'dd/mm/yy';
        dateformat_str = 'dd/mm/yyyy';
    } else if (dateformat == 'iso' ) {
        if (! date.match('[0-9]{2}-[0-9]{2}-[0-9]{4}') )
            return 0;
        dateformat = 'yy-mm-dd';
        dateformat_str = 'yyyy-mm-dd';
    } else if ( dateformat == 'dmydot' ) {
        if (! date.match('[0-9]{2}.[0-9]{2}.[0-9]{4}') )
            return 0;
        dateformat = 'dd.mm.yy';
        dateformat_str = 'dd.mm.yyyy';
    }
    try {
        $.datepicker.parseDate(dateformat, date);
    } catch (e) {
        return 0;
    };
    return 1;
}

Then I tweaked the function validate_date to return true / false (in
calendar.inc)

function validate_date (dateText, inst) {
    if ( !is_valid_date(dateText) ) {
        var dateformat_str = '[% Koha.Preference('dateformat') %]';
        alert(MSG_PLEASE_ENTER_A_VALID_DATE.format(dateformat_str));
        if (inst) {
            $('#'+inst.id).val('');
        }
        return 0;
    }
    return 1;
}

(The if (inst) was to avoid a JavaScript error)


Now I could trigger the validation. But one problem now was that empty dates
could no longer be saved.

I have no more time at the moment to dig deeper, but maybe the notes can help
somebody else to find a solution.

-- 
You are receiving this mail because:
You are watching all bug changes.


More information about the Koha-bugs mailing list