Im Formular gehen die javaScript Befehle nicht mehr?
Ich haben ein Online Formular erstellt und bei mir auf dem Server geht alles, aber leider bei dem Kunden gehn die JavaScipt Befehle nicht. Obwohl es das gleich Formular ist
Hi maetin944, könntest du uns den HTML-Teil und den JavaScript-Teil zeigen. Dann könnte man dir bestimmt eine passende Antwort geben.
hier geht es nicht
https://schulen.mp-forms.de/koblenz-betreuung_grundschule/
aber hier geht es:
https://dev2.cmsfs.de/ga-mikroprojekt-verpflegung_ganztagsschueler/
3 Antworten
Hi maetin944,
ich würde empfehlen in zukunft auf jQuery zu verzichten. Diese JavaScript-Library ist veraltet und es finden sich viel bessere Methoden und Funktionen im neuesten JavaScript(ECMAScript)-Standard. Ich habe da aber was aus dem Internet gefischt und etwas angepasst, ich jetzt nicht so der Freund von jQuery bin.
Du findest sehr viel gute Artikel über Webformulare auch unter de.selfhtml.org
jQuery.validator.addMethod("datum", function (value, element) {
if (value.length === 0 && this.optional(element)) return true;
if (!/^\d{2}\.\d{2}\.\d{4}$/.test(value)) return false;
const [day, month, year] = value.split('.').map(Number);
const date = new Date(year, month - 1, day);
return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day && year > 1800;
}, 'Bitte geben Sie ein korrektes Datum ein.');
jQuery.validator.addMethod("uhrzeit", function (value, element) { if (value.length === 0 && this.optional(element)) return true; if (!/^\d{2}:\d{2}$/.test(value)) return false; const [hours, minutes] = value.split(':').map(Number); return hours >= 0 && hours < 24 && minutes >= 0 && minutes < 60; }, 'Bitte geben Sie eine korrekte Uhrzeit ein.');
jQuery.validator.addMethod("vorgangsnummer", function (value, element) {
if (value.length === 0 && this.optional(element)) return true;
if (!/^[0-9A-Z]{5}-[0-9A-Z]{5}-[0-9A-Z]{5}$/.test(value)) return false;
let sum = 0;
for (let i = 0, count = 0; count < 15; i++) {
if (value[i] !== '-') {
sum += value.charCodeAt(i);
count++;
}
}
return sum % 100 === parseInt(value.slice(-2), 10);
}, 'Bitte geben Sie eine korrekte Vorgangsnummer ein.');
jQuery.validator.addMethod("onlychars", function (value, element) {
return (value.length === 0 && this.optional(element)) || /^[A-Za-zäöüÄÖÜß ]+$/.test(value);
}, 'Bitte geben Sie nur Buchstaben ein.');
Viel Erfolg
Ich habe auch ein paar Kritikpunkte zum Formular und zwar der Aufbau. Es sind viel zu viele Texte auf einmal zu sehen. Am besten wäre es mit einem Step-by-Step-Formular zu arbeiten, um die Textlastigkeit aufzuteilen. Ich hinterfrage auch bei einem Formular, ob es tatsächlich so viel Text stehen muss. Im Druckbereich gibt es immer ein Beiblatt und im Digitalen kann man einklappbare Textbereiche erstellen. Ich würde meinen Kunden niemals so ein Formular abliefern.
Anmerkung: Beim Koblenzer Formular gelingt auch ein Absenden ohne Inhalt. (21.2.25, ca. 13:45). Das ist sicherlich nicht so gewollt und auch nicht sinnvoll.
Davon abgesehen dass "geht nicht" keine Fehlerbeschreibung ist (sollte man als Entwickler eigentlich wissen): Ruf das Formular im ersten Link einfach mal mit aktivierten Developer Tools im Browser auf. Dann wird dir sofort einiges ins Auge springen ...