Verschachteltes Form-Tag
otto Normalverbraucher
- html
- javascript
Hallo,
ich habe eine neue Seite derart aufgebaut dass die Index Seite als Globale Vorlage mit Containern agiert in die mit PHP unterschiedliche Inhalte eingesetzt werden. Es existiert in der Index Seite eine globales Form Tag mit Auswertungen mittels Javascript.
Leider taucht jetzt ein Seiteninhalt mit einem <input typ ='text' ... auf mit dem Statement 'required'. Das hat zur Folge, dass alle anderen Links und Funktionen nicht mehr funktionieren, wenn dieses Feld keinen Inhalt hat.
Deshalb kam die Idee: Kann man das Form Tag nicht irgendwie verschachteln?
Gruß Otto
Hallo Otto,
da du Javascript sowieso nutzt, kannst du das Feld auf required=false
setzen.
Falls das Feld nicht bekannt ist, musst du alle inputs durchlaufen.
Idee (nicht getestet):
arr_input = document.getElementsByTagName( "input" );
for ( let i=0; i<arr_input.length; i++ ) {
arr_input[i].required = false;
}
Gruß Linuchs
Klingt gut. Müsste natürlich dann bei allen anderen Funktionen eingesetzt werden. Wäre insofern nicht allzu tragisch, da ja eh alle global gesetzt sind.
Mal testen.
Müsste natürlich dann bei allen anderen Funktionen eingesetzt werden.
Wenn du eine *.js Datei einbindest, kannst du diesen Lauf zentral machen, unmittelbar nach Laden der Seite. Ungefähr so:
window.addEventListener('DOMContentLoaded', function () {
arr_input = document.getElementsByTagName( "input" );
for ( let i=0; i<arr_input.length; i++ ) {
arr_input[i].required = false;
}
});
@@Otto Normalverbraucher
Klingt gut.
Wann immer JavaScript die Lösung für etwas sein soll, was man auch ohne JavaScript hinbekommt, dann klingt das nicht gut.
😷 LLAP
@@Otto Normalverbraucher
Klingt gut.
Wann immer JavaScript die Lösung für etwas sein soll, was man auch ohne JavaScript hinbekommt, dann klingt das nicht gut.
😷 LLAP
Wenn Du mir nen Tip hast, wie ich umfangreiche Berechnungen ohne JS hinbekomme, nehme ich deinen Tip gerne an.
@@Otto Normalverbraucher
Wann immer JavaScript die Lösung für etwas sein soll, was man auch ohne JavaScript hinbekommt, dann klingt das nicht gut.
Wenn Du mir nen Tip hast, wie ich umfangreiche Berechnungen ohne JS hinbekomme, nehme ich deinen Tip gerne an.
Es ging nicht um deine umfangreichen Berechnungen, sondern um das Ausschalten der Nutzereingabe-Validierung.
😷 LLAP
@@otto Normalverbraucher
Es existiert in der Index Seite eine globales Form Tag mit Auswertungen mittels Javascript.
Was heißt das?
Leider taucht jetzt ein Seiteninhalt mit einem <input typ ='text' ... auf mit dem Statement 'required'.
Wo taucht das auf? Innerhalb des form
-Elements? (Element, nicht Tag.)
Gehört das denn in dieses Formular? Oder in ein eigenes?
Das hat zur Folge, dass alle anderen Links und Funktionen nicht mehr funktionieren, wenn dieses Feld keinen Inhalt hat.
Dann schalte doch die Validierung ab – für das gesamte Formular oder für das Eingabefeld.
Deshalb kam die Idee: Kann man das Form Tag nicht irgendwie verschachteln?
Nein.
😷 LLAP
Hallo,
Deshalb kam die Idee: Kann man das Form Tag nicht irgendwie verschachteln?
Nein.
und das form-Element auch nicht. 😉
Live long and pros healthy,
Martin
Hallo otto,
Leider taucht jetzt ein Seiteninhalt mit einem <input typ ='text' ... auf mit dem Statement 'required'. Das hat zur Folge, dass alle anderen Links und Funktionen nicht mehr funktionieren, wenn dieses Feld keinen Inhalt hat.
Links funktionieren sicherlich noch, die lösen keinen Submit des Forms aus. Es sei denn, du verwendest Oberflächenelemente, die wie Links aussehen, aber indirekt doch das Form submitten.
Das Grundproblem klingt aber nach Fußballspielen, ohne sich die Schuhe schmutzig machen zu wollen.
Entweder hat diese Inhaltskomponente den Bedarf, dieses Eingabeelement als Pflichtfeld zu haben, dann muss dieser Bedarf auch erfüllt werden. Oder sie hat ihn nicht, dann gehört da auch kein required hin.
Wenn dein Seiteninhalt aus Gruppen besteht, und jede Gruppe für sich ausgewertet wird, dann wäre es ggf. sinnvoll, jede Gruppe in ein eigenes Form zu setzen und dieses Form als "Geltungsbereich" der Validierung anzusehen. Forms zu schachteln geht jedenfalls nicht.
Wenn es unbedingt ein großes Form sein muss, solltest Du versuchen, das required Attribut loszuwerden und durch eine eigene, gruppierfähige Validierung zu ersetzen. Das ist nicht schön, und man soll normalerweise keine Browserfunktionalität nachbauen, aber wenn der Browser nun mal keine scoped validation hat... Du könntest die Validierattribute bspw. durch data-Attribute ersetzen, sowas wie data-required="true"
oder data-pattern="..."
. Wenn dein Script entscheidet, dass eine Eingabegruppe relevant ist, könntest Du diese Ersatzattribute in die echten HTML Attribute kopieren, und ist sie es nicht, nimmst Du die Attribute wieder weg. Sind ja nur 6 (required, pattern, minlength, maxlength, min, max).
Ohne genauere Kenntnis deiner Fachlichkeit ist das allerdings alles Spekulatius.
Rolf
Lieber otto Normalverbraucher,
Es existiert in der Index Seite eine globales Form Tag mit Auswertungen mittels Javascript.
da ist ja der Fehler!
Wozu braucht es ein Formular, wenn die Auswertung ausschließlich mit JavaScript gemacht wird? Wenn das Formular nie an den Server versandt wird, braucht es auch kein form
-Element.
Leider taucht jetzt ein Seiteninhalt mit einem <input typ ='text' ... auf mit dem Statement 'required'.
Wenn Dich das überrascht, dann hast Du den Überblick verloren, welche Funktionalitäten Deines Codes welche Wirkungen hervorrufen.
Gegenfrage: Warum wird das bereits vorhandene form
-Element mit ergänzenden Inhalten erweitert, anstatt dass Du für verschiedene Zwecke verschiedene form
-Elemente verwendest?
Das hat zur Folge, dass alle anderen Links und Funktionen nicht mehr funktionieren, wenn dieses Feld keinen Inhalt hat.
Links in einem Formular, die nicht mehr funktionieren... das muss man erst einmal nachvollziehen können. Ich kann es nicht.
Liebe Grüße
Felix Riesterer
printf('Hallo %s!', ['Du', 'ihr', 'Welt', 'zusammen'][rand(0, 3)]);
Es existiert in der Index Seite eine globales Form Tag mit Auswertungen mittels Javascript.
da ist ja der Fehler!
Wozu braucht es ein Formular, wenn die Auswertung ausschließlich mit JavaScript gemacht wird? Wenn das Formular nie an den Server versandt wird, braucht es auch kein
form
-Element.
Ein form-Element ist sehr angebracht, weil es
und man
/K