return false;
};
+
+ // Performs various validation steps on the descendants of
+ // 'selector'. Elements that should be validated must have an
+ // attribute named "data-validate" which is set to a space-separated
+ // list of tests to perform. Additionally, the attribute
+ // "data-title" must be set to a human-readable name of the field
+ // that can be shown as part of an error message.
+ //
+ // Supported validation tests are:
+ // - "required": the field must be set (its .val() must not be empty)
+ //
+ // The validation will abort and return "false" as soon as
+ // validation routine fails.
+ //
+ // The function returns "true" if all validations succeed for all
+ // elements.
+ ns.validate_form = function(selector) {
+ var validate_field = function(elt) {
+ var $elt = $(elt);
+ var tests = $elt.data('validate').split(/ +/);
+ var info = {
+ title: $elt.data('title'),
+ value: $elt.val(),
+ };
+
+ for (var test_idx in tests) {
+ var test = tests[test_idx];
+
+ if (test === "required") {
+ if ($elt.val() === '') {
+ alert(kivi.t8("The field '#{title}' must be set.", info));
+ return false;
+ }
+
+ } else {
+ var error = "kivi.validate_form: unknown test '" + test + "' for element ID '" + $elt.prop('id') + "'";
+ console.error(error);
+ alert(error);
+
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ selector = selector || '#form';
+ var ok = true;
+ var to_check = $(selector + ' [data-validate]').toArray();
+
+ for (var to_check_idx in to_check)
+ if (!validate_field(to_check[to_check_idx]))
+ return false;
+
+ return true;
+ };
});
kivi = namespace('kivi');
"Text block picture actions":"Aktionen für Textblockbilder",
"The IBAN is missing.":"Die IBAN fehlt.",
"The description is missing.":"Die Beschreibung fehlt.",
+"The field '#{title}' must be set.":"Das Feld »#{title}« muss gesetzt sein.",
"The name is missing.":"Der Name fehlt.",
"The name must only consist of letters, numbers and underscores and start with a letter.":"Der Name darf nur aus Buchstaben (keine Umlaute), Ziffern und Unterstrichen bestehen und muss mit einem Buchstaben beginnen.",
"The option field is empty.":"Das Optionsfeld ist leer.",
'The export failed because of malformed transactions. Please fix those before exporting.' => 'Es sind fehlerhafte Buchungen im Exportzeitraum vorhanden. Bitte korrigieren Sie diese vor dem Export.',
'The factor is missing in row %d.' => 'Der Faktor fehlt in Zeile %d.',
'The factor is missing.' => 'Der Faktor fehlt.',
+ 'The field \'#{title}\' must be set.' => 'Das Feld »#{title}« muss gesetzt sein.',
'The file has been sent to the printer.' => 'Die Datei wurde an den Drucker geschickt.',
'The file is available for download.' => 'Die Datei ist zum Herunterladen verfügbar.',
'The file name is missing' => 'Der Dateiname fehlt',