Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 8ee89b95

Von Kivitendo Admin vor fast 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
64 64
  if(input_name.value == "") {
65 65
    return true;
66 66
  }
67

  
68
  if ( ( input_name.value.match(/^\d+$/ ) ) && !(dateFormat.lastIndexOf("y") == 3) ) {
69
    // date shortcuts for entering date without separator for three date styles, e.g.
70
    // 31122014 -> 12.04.2014
71
    // 12312014 -> 12/31/2014
72
    // 31122014 -> 31/12/2014
73
    
74
    if (input_name.value.match(/^\d{8}$/)) {
75
      input_name.value = input_name.value.replace(/^(\d\d)(\d\d)(\d\d\d\d)$/, "$1" + seperator + "$2" + seperator + "$3")
76
    } else if (input_name.value.match(/^\d{6}$/)) {
77
      // 120414 -> 12.04.2014
78
      input_name.value = input_name.value.replace(/^(\d\d)(\d\d)(\d\d)$/, "$1" + seperator + "$2" + seperator + "$3")
79
    } else if (input_name.value.match(/^\d{4}$/)) {
80
      // 1204 -> 12.04.2014
81
      var today = new Date();
82
      var year = today.getYear();
83
      if (year < 999) year += 1900;
84
      input_name.value = input_name.value.replace(/^(\d\d)(\d\d)$/, "$1" + seperator + "$2");
85
      input_name.value = input_name.value + seperator + year;
86
    } else  if ( input_name.value.match(/^\d{1,2}$/ ) ) {
87
      // assume the entry is the day of the current month and current year
88
      var today = new Date();
89
      var day = input_name.value;
90
      var month = today.getMonth() + 1;
91
      var year = today.getYear();
92
      if( day.length == 1 && day < 10) {
93
        day='0'+day; 
94
      };
95
      if(month<10) {
96
        month='0'+month;
97
      };
98
      if (year < 999) year += 1900;
99
      if ( dateFormat.lastIndexOf("d") == 1) {
100
        input_name.value = day + seperator + month + seperator + year;
101
      } else {
102
        input_name.value = month + seperator + day + seperator + year;
103
      } 
104
    };
105
  }
106

  
67 107
  var matching = new RegExp(dateFormat.replace(/\w/g, '\\d') + "\$","ig");
68 108
  if(!(dateFormat.lastIndexOf("y") == 3) && !matching.test(input_name.value)) {
69 109
    matching = new RegExp(dateFormat.replace(/\w/g, '\\d') + '\\d\\d\$', "ig");

Auch abrufbar als: Unified diff