Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 8ee89b95

Von Kivitendo Admin vor etwa 10 Jahren hinzugefügt

  • ID 8ee89b95149768690e3b09ba19b59b93986fbc1e
  • Vorgänger f6ed86ef
  • Nachfolger 93b69b19

Schnelle Datumseingabe ohne Trenner

Buchhalter sind es gewohnt, das Datum im Nummernblock ohne Punkte
eingeben zu können, z.B. wird aus
01122014 -> 01.12.2014

Mit diesem Patch wird im Datumsfeld noch vor der Prüfung auf ein gültiges
Datumsformat per Javascript geprüft, ob
  • die Eingabe nur aus Zahlen besteht
  • das Datumsformat dd.mm.yy, dd-mm-yy oder mm-dd-yy ist

Trifft dies zu, werden am Beispiel für den Fall dd.mm.yy folgende
Umwandlungen durchgeführt:

8 Zahlen:   31122014  -> 31.12.2014
6 Zahlen: 311214 -> 31.12.2014
4 Zahlen: 3112 -> 31.12.2014 aktuelles Jahr wird angenommen
1-2 Zahlen: 12 -> 31.10.2014 aktueller Monat wird angenommen
7 -> 07.10.2014 aktueller Monat wird angenommen

Nach der Umwandlung findet wie bisher eine (simple) Plausibilitätsprüfung des
Datums per Javascript statt. Sollte das Datumsfeld andere Datumsfelder
beeinflussen, wie z.B. das Rechnungsdatum das Fälligkeitsdatum im Ein-
und Verkauf durch ein onChange, muß hier eventuell mit einem setTimeOut
gearbeitet werden, da ansonsten der Wert vor der Umwandlung genommen
wird.

Unterschiede anzeigen:

js/common.js
if(input_name.value == "") {
return true;
}
if ( ( input_name.value.match(/^\d+$/ ) ) && !(dateFormat.lastIndexOf("y") == 3) ) {
// date shortcuts for entering date without separator for three date styles, e.g.
// 31122014 -> 12.04.2014
// 12312014 -> 12/31/2014
// 31122014 -> 31/12/2014
if (input_name.value.match(/^\d{8}$/)) {
input_name.value = input_name.value.replace(/^(\d\d)(\d\d)(\d\d\d\d)$/, "$1" + seperator + "$2" + seperator + "$3")
} else if (input_name.value.match(/^\d{6}$/)) {
// 120414 -> 12.04.2014
input_name.value = input_name.value.replace(/^(\d\d)(\d\d)(\d\d)$/, "$1" + seperator + "$2" + seperator + "$3")
} else if (input_name.value.match(/^\d{4}$/)) {
// 1204 -> 12.04.2014
var today = new Date();
var year = today.getYear();
if (year < 999) year += 1900;
input_name.value = input_name.value.replace(/^(\d\d)(\d\d)$/, "$1" + seperator + "$2");
input_name.value = input_name.value + seperator + year;
} else if ( input_name.value.match(/^\d{1,2}$/ ) ) {
// assume the entry is the day of the current month and current year
var today = new Date();
var day = input_name.value;
var month = today.getMonth() + 1;
var year = today.getYear();
if( day.length == 1 && day < 10) {
day='0'+day;
};
if(month<10) {
month='0'+month;
};
if (year < 999) year += 1900;
if ( dateFormat.lastIndexOf("d") == 1) {
input_name.value = day + seperator + month + seperator + year;
} else {
input_name.value = month + seperator + day + seperator + year;
}
};
}
var matching = new RegExp(dateFormat.replace(/\w/g, '\\d') + "\$","ig");
if(!(dateFormat.lastIndexOf("y") == 3) && !matching.test(input_name.value)) {
matching = new RegExp(dateFormat.replace(/\w/g, '\\d') + '\\d\\d\$', "ig");

Auch abrufbar als: Unified diff