Update Eintrag in Datenbank
Becca
- php
0 Gunnar Bittersmann- formulare
- html
- php
1 Rolf b1 pl
Hallo,
wie kann ich erreichen dass mein Formular
<form name="frm_sb" method="post">
<label for="sb">Selbstabholung</label>
<input name="sb" type="radio" value="1" <?php echo (htmlspecialchars($array['sb']) == '1'?'checked="checked"':NULL) ?> /> Ja
<input name="sb" type="radio" value="0" <?php echo (htmlspecialchars($array['sb']) == '0'?'checked="checked"':NULL) ?> /> Nein
<input type="hidden" name="id" value="<?php echo htmlspecialchars($array['id']); ?>">
</form>
wenn ich die Auswahl ändere? Bei einem select Feld mache ich dieses so
onchange="this.form.submit()
@@Becca
wie kann ich erreichen dass mein Formular … wenn ich die Auswahl ändere?
Dass dein Formular was?
Deine Formularfelder haben übrigens keine Beschriftung. for
-Attribute beziehen sich auf IDs von Eingabefeldern; bei dir haben sie keine IDs.
Radiobuttons sollte üblicherweise in fieldset
gruppiert werden:
<form name="frm_sb" method="post">
<fieldset>
<legend>Selbstabholung</lagend>
<input id="sb_ja" name="sb" type="radio" value="1" <?php echo ($array['sb'] == '1'?'checked="checked"':NULL) ?> />
<label for="sb_ja">Ja</label>
<input id="sb_nein" name="sb" type="radio" value="0" <?php echo ($array['sb'] == '0'?'checked="checked"':NULL) ?> />
<label for="sb_nein">Nein</label>
</fieldset>
<input type="hidden" name="id" value="<?php echo htmlspecialchars($array['id']); ?>">
</form>
oder
<form name="frm_sb" method="post">
<fieldset>
<legend>Selbstabholung</lagend>
<label>
<input id="sb_ja" name="sb" type="radio" value="1" <?php echo ($array['sb'] == '1'?'checked="checked"':NULL) ?> /> Ja
</label>
<label for="sb_nein">
<input id="sb_nein" name="sb" type="radio" value="0" <?php echo ($array['sb'] == '0'?'checked="checked"':NULL) ?> /> Nein
</label>
</fieldset>
<input type="hidden" name="id" value="<?php echo htmlspecialchars($array['id']); ?>">
</form>
In der zweiten Variante ginge es auch ohne IDs und for
-Attribute – außer in kaputten Screenreadern.
Da $array['sb']
nicht in den HTML-Code ausgegeben wird, ist es unsinnig, dass durch htmlspecialchars()
zu jagen.
Wo ist der Submit-Button? Wie schickt man das Formular ohne JavaScript ab?
LLAP 🖖
Wo ist der Submit-Button? Wie schickt man das Formular ohne JavaScript ab?
Kannst du lesen oder nur unützige Kritik abgeben?
onchange="this.form.submit()
Damit schicke ich ein select Feld ab. Müsste doch auch irgendwie bei den Radio-Buttons sein? Ein normaler Button kommt mir nicht auf die Seite, wird schon lange nicht mehr benötigt.
Hallo Becca,
was ist daran so schwierig, diese Anmerkung …
Wo ist der Submit-Button? Wie schickt man das Formular ohne JavaScript ab?
… und diese …
Damit schicke ich ein select Feld ab. Müsste doch auch irgendwie bei den Radio-Buttons sein? Ein normaler Button kommt mir nicht auf die Seite, wird schon lange nicht mehr benötigt.
… in Einklang zu bringen? Warum willst du zwingend Nutzer ohne JavaScript aussperren?
Viele Grüße
Robert
Warum willst du zwingend Nutzer ohne JavaScript aussperren?
Weil ein Button
a) Nicht in mein Design passt b) Man in der heutigen Zeit überall JavaScript braucht, wer dieses nicht hat, steht vor geschlossenen Türen. Das ist meine Seite, das ist meine Entscheidung. Punkt!
@@Becca
Warum willst du zwingend Nutzer ohne JavaScript aussperren?
Weil ein Button
a) Nicht in mein Design passt
Unsinnige Begründung.
Design ist nicht, wie etwas aussieht, sondern wie etwas funktioniert.
b) Man in der heutigen Zeit überall JavaScript braucht, wer dieses nicht hat, steht vor geschlossenen Türen.
Es haben weitaus mehr Leute kein JavaScript als du dir vorstellen kannst.
Das ist meine Seite, das ist meine Entscheidung. Punkt!
Deine Entscheidung. Nicht die beste.
LLAP 🖖
Design ist nicht, wie etwas aussieht, sondern wie etwas funktioniert.
Kannst du einfach mal etwas hinnehmen ohne ständig deinen Senf abgeben zu müssen? Ich bin jetzt 20 Postings von dir durchgegangen immer hast du was zu meckern, zu verbessern. Du nimmst nie etwas hin.
Und doch, Design steht auf MEINER WebSeite, die MIR gehört an oberster Stelle, ich mach die WebSeite für MICH, das ist MEIN Blog, das sind MEINE Inhalte. Wer sie lesen will muss sich anpassen, wer nicht kann weiter gehen. Ich verdiene damit kein Geld, ich mach das für mich und meine Freunde, wer die Seite zufällig besucht, muss damit leben! GANZ EINFACH!
Ein Literaturtipp aus aktuellem Anlass: „Zen und die Kunst ein Motorrad zu warten“.
@@Becca
Design ist nicht, wie etwas aussieht, sondern wie etwas funktioniert.
Kannst du einfach mal etwas hinnehmen ohne ständig deinen Senf abgeben zu müssen? Ich bin jetzt 20 Postings von dir durchgegangen immer hast du was zu meckern, zu verbessern. Du nimmst nie etwas hin.
Und doch, Design steht auf MEINER WebSeite, die MIR gehört an oberster Stelle, ich mach die WebSeite für MICH, das ist MEIN Blog, das sind MEINE Inhalte. Wer sie lesen will muss sich anpassen, wer nicht kann weiter gehen. Ich verdiene damit kein Geld, ich mach das für mich und meine Freunde, wer die Seite zufällig besucht, muss damit leben! GANZ EINFACH!
„Du hättest "Ich will keine Hilfe" auch wesentlich kürzer schreiben können.“ — Kai345
LLAP 🖖
Habe ich NIE gesagt. Schon wieder DEINE Meinung die nur zählt!
Hallo Becca,
Weil ein Button
a) Nicht in mein Design passt
Dann stimmt mit dem Design etwas nicht.
b) Man in der heutigen Zeit überall JavaScript braucht, wer dieses nicht hat, steht vor geschlossenen Türen. Das ist meine Seite, das ist meine Entscheidung. Punkt!
Kann man so sehen, es sind schließlich deine Nichtbesucher, wenn „die Seite nicht geht“. Aber du solltest vielleicht diese Arroganz gegenüber bestimmten Seitenbesuchern zu Gunsten von progressive enhancement überdenken. Du könntest z.B. den Button mit JavaScript ausblenden.
Viele Grüße
Robert
Nein, keine zwei Optionen. Ich möchte kein Button, wie oft denn noch! Es ist MEINE Seite, es sind MEINE Besucher. Kapier es doch endlich oder diskutiere hier nicht mit. Schlimm!
Liebe Becca,
Nein, keine zwei Optionen. Ich möchte kein Button, wie oft denn noch!
Hast du überhaupt verstanden, welchen Vorschlag ich dir mache? Frag bitte nach, wenn da etwas unklar ist.
Es ist MEINE Seite, es sind MEINE Besucher. Kapier es doch endlich oder diskutiere hier nicht mit. Schlimm!
Du suchst Hilfe und bekommst welche, aber anstatt diese anzunehmen oder wenigstens mal darüber nachzudenken lehnst du sie von vornherein ab. Schlimm!
Viele Grüße
Robert
Hast du überhaupt verstanden, welchen Vorschlag ich dir mache? Frag bitte nach, wenn da etwas unklar ist.
So habe ich es verstanden:
Hat ein User JS drin wird der Button ausgeblendet, hat ein User kein JS wird der Button eingeblendet. richtig? Und genau darauf kann ich sehr gut verzichten.
Hi,
Hat ein User JS drin wird der Button ausgeblendet, hat ein User kein JS wird der Button eingeblendet. richtig?
Das ist vollkommen korrekt.
Und genau darauf kann ich sehr gut verzichten.
Angesichts des Kosten-Nutzen-Verhältnisses kann ich das nicht nachvollziehen.
Viele Grüße
Robert
Hello,
Hat ein User JS drin wird der Button ausgeblendet, hat ein User kein JS wird der Button eingeblendet. richtig?
Das ist vollkommen korrekt.
Fast!
Der Button BLEIBT eingeblendet.
Liebe Grüße
Tom S.
Hallo Becca,
Warum willst du zwingend Nutzer ohne JavaScript aussperren?
Weil ein Button
a) Nicht in mein Design passt
Du kannst das Aussehen des Buttons doch anpassen, wie du es für richtig hälst?
LG,
CK
Du kannst das Aussehen des Buttons doch anpassen, wie du es für richtig hälst?
Habe ich schon versucht, passt einfach nicht ins Design.
Der User müsste hinter JEDEM Eintrag dann ein Button klicken, das meiner Meinung nach zu umständlich ist. Schöner ist doch er User klickt ein Button an der Eintrag bekommt im HINTERGRUND ein Update. So stelle ich mir eine optimale Nutzung vor.
Ähm …
Der User müsste hinter JEDEM Eintrag dann ein Button klicken, das meiner Meinung nach zu umständlich ist. Schöner ist doch er User klickt ein Button an der Eintrag bekommt im HINTERGRUND ein Update. So stelle ich mir eine optimale Nutzung vor.
… was spricht dagegen, das Update im Hintergrund (XHR?) auszuführen und als Fallback einen Button am Ende des Formulars anzubieten, mit dem alle Änderungen submittet werden?
Viele Grüße
Robert
NEIN! Es gibt kein Button! Schluss jetzt, oder sind wir hier im Kindergarten?
Es hieße „keinen“ Button.
Und wir sind anscheinend so lange im Kindergarten, wie du uns stichhaltige Gründe für ein 100% nutzbares Formular vorenthältst. Aus funktionaler Sicht spricht IMHO nichts gegen die hier gemachten Vorschläge und die ließen sich sogar im Layout so umsetzen, wie du das wünscht. Aber dafür müsstest du deine Abwehrhaltung ablegen und konstruktiv mit uns diskutieren.
NEIN!Ich bleibe bei meiner Meinung ich bin alt genug.
Hallo,
ich bin alt genug.
Können wir da bitte mal dein Kindergartendiplom sehen? ;)
scnr
Gruß
Kalk
Hello,
Und wenn man nun noch auf den ersten Blick zweifelsfrei erkennen könnte, zu welchem Radio das 'Ja' gehört, dann wäre man schon einen Schritt weiter.
Und wenn Du dann anstelle der Radio-Buttons richtige Submit-Buttons verwenden würdest, könnte ich deiner Logik sogar folgen. Die gesamte Seite wird bei jeder Änderung (Klick auf einen Button) gepostet und neu aufgebaut. Dafür würde man dann auch kein JavaScript benötigen.
Liebe Grüße
Tom S.
Du bringst mich auf die Idee. Ich setzte das ganze mit einem kleinen select Feld um. Damit sollte mein Problem gelöst sein und ich hätte die Buttons weg.
@@Christian Kruse
Du kannst das Aussehen des Buttons doch anpassen, wie du es für richtig hälst?
Nein. Das wären ja 3 Zeilen CSS mehr, was die Ladezeit in exorbitante Höhen treibt. LOL.
LLAP 🖖
Rede doch nicht so ein Bullshit, sorry aber du bringst mich auf 180! Die Bemerkung von mir bezog sich auf das Formular, reiß nicht alles aus dem Zusammenhang. Mit deinem fieldset und Co habe ich viel mehr Zeilen Code und Arbeit.
@@Becca
Rede doch nicht so ein Bullshit, sorry aber du bringst mich auf 180!
Du hast Glück, dass ich so ein Gemütsmensch bin. Sonst hätte ich schon ein Schloss vor diesen Thread gemacht.
Die Bemerkung von mir bezog sich auf das Formular, reiß nicht alles aus dem Zusammenhang. Mit deinem fieldset und Co habe ich viel mehr Zeilen Code und Arbeit.
Code zum Stylen von button
= gut, Code zum Stylen von fieldset
= schlecht, verstehe.
Kleiner Hinweis: Die sinnvolle Verwendung von HTML-Elementen richtet sich nicht danach, wieveiel Arbeit ein Entwickler mit dem Stylen hat.
LLAP 🖖
Du hast Glück, dass ich so ein Gemütsmensch bin. Sonst hätte ich schon ein Schloss vor diesen Thread gemacht.
Kann es nicht sein dass du Angst hast dass dir mal jemand die Meinung geigt. Schließen zeigt nur dass du selber nur deine Meinung erlaubst keine andere.
Hast du gelesen für wen die Seite ist? Nein hast du bestimmt nicht. Hast du gelesen dass es meine Seite ist. Ich darf auf meiner Seite machen was ICH will.
Hello,
Du kannst das Aussehen des Buttons doch anpassen, wie du es für richtig hälst?
Und ihn für alle Nutzer mit JavaScript sogar ausblenden.
Schade, dass Gunnar das nicht einfach mal zeigt, wie das ordnungsgemäß ginge.
ICH will mich mit ihm jetzt aber nicht anlegen, dass ich Label falsch anwende oder Fieldset nicht benutze oder was man sonst immer noch finden kann. Ich laude sonst Gefahr, wieder meine unerwünchte Meinung bzw. Vergleiche zu äußern ...
Liebe Grüße
Tom S.
Traurig dass du Angst hast deine Meinung zu sagen. Jeder hat doch das Recht seine Meinung zu äußern.
@@TS
Schade, dass Gunnar das nicht einfach mal zeigt, wie das ordnungsgemäß ginge.
Ich fände es schade, hier die sprichwörtlichen Perlen vor die sprichwörtlichen Säue zu werfen.
LLAP 🖖
@@Becca
Kannst du lesen oder nur unützige Kritik abgeben?
Dass ich dir das Markup für dein Formular so gemacht habe, dass es funktioniert, ist für dich „unützige Kritik“?
LLAP 🖖
Ja, da meines auch wunderbar in allen relevanten Browsern getan hat.
Ach noch etwas vergessen. Mit deinem Code benötige ich viel mehr CSS Code um das Formular zu stylen. Mehr Code = größere Datei = langsamere Ladegeschwindigkeit.
Mit mir brauchst du darüber gar nicht diskutieren, ich bleibe bei meinem Formular ob es dir passt oder nicht.
Hallo Becca,
Mit mir brauchst du darüber gar nicht diskutieren, ich bleibe bei meinem Formular ob es dir passt oder nicht.
Warum bist du dann überhaupt hier?
Viele Grüße
Robert
Warum bist du dann überhaupt hier?
Ich wollte keine Meinung zu meinem Formular sondern lediglich eine Hilfe wie ich es abschicken kann. Mehr nicht.
Hallo Becca,
Ich wollte keine Meinung zu meinem Formular sondern lediglich eine Hilfe wie ich es abschicken kann. Mehr nicht.
Und genau diese Hilfe haben wir dir hier gegeben.
Viele Grüße
Robert
Ja, mit einem Button was für MICH nicht in Frage kommt. Also 0 Hilfe! Nur dummes geredet was meine Zeit kostet und meine Nerven belastet.
Dann lies mal genau meinen Kommentar anstatt ausfallend zu werden.
@@Becca
Warum bist du dann überhaupt hier?
Ich wollte keine Meinung zu meinem Formular sondern lediglich eine Hilfe wie ich es abschicken kann. Mehr nicht.
„Uns gibt es nur mit Meinung und ungebetener Beratung.“
—Chräcker Heller, 2006
Daran hat sich bis heute nichts geändert. Und wird sich wohl auch in Zukunft nicht.
LLAP 🖖
Na gut ist mir egal, dann gehe ich in ein anders Forum. Ihr stellt euch selber schlecht da, da ich natürlich im anderen Forum berichten werde wie es hier zugeht und dass man hier keine Hilfe bekommt. Nur Ratschläge die keiner braucht und möchte!
Reisende soll man nicht aufhalten …
vorallem nicht wenn man sie dann in einem anderen Forum wiedertrifft und die Diskussion weitergeht :D
Hello,
Warum bist du dann überhaupt hier?
Ich wollte keine Meinung zu meinem Formular sondern lediglich eine Hilfe wie ich es abschicken kann. Mehr nicht.
Na, jetzt kommen wir der Sache doch langsam näher. WEnn ich das mal aus dem Gedächtnis und meinem Verständnis für dein Anliegen zusammenfassen darf?
Dann hilft Dir ein Asynchronous JavaScript & XML Request (AJAX-Request, XHR).
Wenn Du das haben möchtest, dann klicke jetzt bitte auf JA
(Ich hoffe, dass Du JavaScript eingeschaltet hast ;-P )
@ALL: Ob man dann noch einen Fallback einbaut, lasst uns bitte mal zurückstellen
Liebe Grüße
Tom S.
JA JA JA JA JA JA - Ich muss leider mindestens 10 Zeichen verwenden!
Hello,
JA
Dann fang mal bei dieser Seite an: JavaScript/XMLHttpRequest und in der Wikipedia unter Ajax (Programmierung)
Außerdem werden wir dann noch das Thema "event bubbling and capturing" anschauen müssen.
Liebe Grüße
Tom S.
Leider verstehst du auch nicht um was es geht, schade! Das Thema hat sich für mich eh erledigt.
Du bejahst alle Fragen von Tom und dann das?
An welcher Stelle hapert es denn? Oder hapert es gar nicht mehr, weil du dich konzeptionell umentschieden hast?
@@Becca
Ja, da meines auch wunderbar in allen relevanten Browsern getan hat.
Deines hat nicht funktioniert. Nicht in Screenreadern – und die sind auch relevant.
Ach noch etwas vergessen. Mit deinem Code benötige ich viel mehr CSS Code um das Formular zu stylen. Mehr Code = größere Datei = langsamere Ladegeschwindigkeit.
Hundert Bytes CSS sparen zu wollen ist wohl sinnlose Mikrooptimierung.
Mit mir brauchst du darüber gar nicht diskutieren, ich bleibe bei meinem Formular ob es dir passt oder nicht.
Ob es mir passt, ist irrelevant. Die Frage ist: Passt es den Nutzern (und zwar allen Nutzern) deiner Seite?
LLAP 🖖
Ist euch eigentlich aufgefallen, dass bei aller Bedienbarkeit keiner darauf hingewiesen hat, wie man die Änderung des Radiobuttons per Script erkennt? Offenbar war Becca ja mit onchange nicht zufrieden.
Um den Hagel an Verbesserungsvorschlägen noch um das Thema Unaufdringlichkeit zu verlängern, und um Beccas ursprüngliche Frage nebenbei zu beantworten:
Das change Event wird auch bei einem Radio-Button gefeuert, der in den CHECKED-Status wechselt. Insofern war eigentlich die Frage unnötig, der erforderliche Mechanismus war bekannt. Wenn es bei Dir so nicht funktioniert hat, hast Du möglicherweise irgendwas nicht ganz richtig gemacht.
In diesem Beispiel (welches in keinster Weise den Anforderungen an Bedienbarkeit etc genügt, dazu steht oben genug an Mustercode) gibt es in meinem Fiddle einen Alert bei jeder Änderung. Statt des Alerts könnte man ein Form submitten. Statt dessen könnte man auch einen Ajax-Request senden, der die Änderung beim Server meldet und die nötigen Updates für den Client abholt.
<fieldset id="selbstabholung">
<label><input name="a" type="radio" value="Ja" />Ja</label>
<label><input name="a" type="radio" value="Nein" />Nein</label>
</fieldset>
Script-Fragment:
registerRadioListener("selbstabholung", radioChanged);
function registerRadioListener(id, func) {
var set = document.getElementById(id);
if (set !== null)
set.querySelectorAll("input").forEach(function(r) {
r.addEventListener("change", func);
});
}
function radioChanged(evt) {
var rb = evt.target;
alert(rb.name+"="+rb.value);
}
Rolf
Hallo Rolf
<fieldset id="selbstabholung"> <label><input name="a" type="radio" value="Ja" />Ja</label> <label><input name="a" type="radio" value="Nein" />Nein</label> </fieldset>
Script-Fragment:
registerRadioListener("selbstabholung", radioChanged); function registerRadioListener(id, func) { var set = document.getElementById(id); if (set !== null) set.querySelectorAll("input").forEach(function(r) { r.addEventListener("change", func); }); } function radioChanged(evt) { var rb = evt.target; alert(rb.name+"="+rb.value); }
Es sollte nicht unerwähnt bleiben, dass die Methode forEach
für NodeLists gegenwärtig noch nicht von allen relevanten Browsern unterstützt wird. Das gleiche gilt für die Implementierung des Iterationsprotokolls und die Methoden entries
, keys
und values
.
Man könnte natürlich ein Polyfill einfügen oder anders über die Liste iterieren, aber ich denke nicht, dass das im vorliegenden Fall sinnvoll wäre. Eigentlich gibt es hier nämlich keinen Grund, überhaupt mehrere Eventhandler zu registrieren, und entsprechend auch keinen Grund, über die Radiobuttons zu iterieren.
document.getElementById('selbstabholung').addEventListener('change', function (event) {
alert(event.target.name + ' = ' + event.target.value);
});
Statt also für jeden einzelnen Radiobutton einen Eventhandler zu registrieren, könnte change
an ein gemeinsames Elternelement delegiert werden. Zum Beispiel an das fieldset-Element. Das Element bei dem das Ereignis eingetreten ist wird — wie in deiner Rückruffunktion auch — über die Eigenschaft event.target
referenziert.
Wenn für mehrere Elemente der gleiche oder der selbe Eventhandler registriert wird, dann ist das meist ein sicheres Zeichen dafür, dass man besser Event Delegation nutzen sollte.
Darüber hinaus wäre zu überlegen, ob die bedingte Anweisung in deinem Beispiel wirklich sinnvoll ist. Abgesehen davon, dass die explizite Prüfung auf ungleich null
unnötig ist und man außer bei Einzeilern lieber Klammern setzen sollte, wäre es vielleicht besser die Registrierung des Eventhandlers nicht auf diese Weise abzusichern.
Wenn man sich verschrieben hat oder irgendwas am relevanten Markup ändert, dann kommt andernfalls direkt ein Typfehler und das Problem kann leicht behoben werden. Wird der Fall jedoch wie in deinem Beispiel abgefangen, dann wird einfach kein Handler registriert, und es ist nicht so offensichtlich woran es liegen könnte, dass am Ende nicht das gewünschte Ergebnis herauskommt.
Was hier die beste Vorgehensweise ist, lässt sich aber wohl nicht so ohne weiteres beantworten, weshalb ich das nicht als Kritik, sondern nur als Anmerkung verstanden wissen möchte.
Vor dem Hintergrund, dass Becca ihre Eventhandler bislang offenbar über HTML-Attribute registriert hat, erscheint es mir noch erwähnenswert, dass es bei der von dir dankenswerterweise eingebrachten Methode addEventListener
darauf ankommt, wann das Script ausgeführt wird.
Der von dir verlinkte Abschnitt im Wiki geht auf diese Problematik nicht ein und hierbei handelt es sich um eine beliebte Fehlerquelle. Es ist also zu beachten, dass der Code mit dem Elemente referenziert werden erst dann ausgeführt wird, wenn das Markup fertig geparst wurde.
Zu diesem Zweck kann der entsprechende Code beispielsweise in einen Eventhandler für das Ereignis DOMContentLoaded
gepackt werden, den man für das Objekt window
registriert. Oder man notiert das Script einfach am Ende vom body
. Auf diese Weise ist sichergestellt, dass zum Zeitpunkt der Ausführung alle Elemente in ihre Objektrepräsentation überführt wurden.
Viele Grüße,
Orlok
Hello,
vielen Dank für die ausführliche Darstellung.
Wie weit kann ich die Event Delegation treiben und trotzdem noch den Auslöser sauber erkennen?
Angenommen der Fall, wir haben wir es mit einer Liste von Radio-Groups zu tun, die jeweils z. B. 5 Auswahl-Alternativen bieten (sehr gut - gut - unentschieden -schlecht - ganz schlecht):
Wie müsste man nun z. B. im umschließenden Form-Element die Events abfangen?
Liebe Grüße
Tom S.
@@TS
Wie weit kann ich die Event Delegation treiben und trotzdem noch den Auslöser sauber erkennen?
Wie immer: mit Event.target
Angenommen der Fall, wir haben wir es mit einer Liste von Radio-Groups zu tun, die jeweils z. B. 5 Auswahl-Alternativen bieten (sehr gut - gut - unentschieden -schlecht - ganz schlecht):
Wie müsste man nun z. B. im umschließenden Form-Element die Events abfangen?
Wenn ein Radiobutton der Auslöser war, bekommst du mit Event.target.name
die Gruppe dieses Radio-Buttons; mit Event.target.value
dessen Wert.
In diesem Beispiel, wo auf change
reagiert wird, was nur von den Radiobutton ausgelöst worden sein kann, mag das ohne weitere Abfrage genügen. Ansonsten in if (Event.target.nodeName === "INPUT")
kapseln.
LLAP 🖖
Hello @Gunnar,
Wie weit kann ich die Event Delegation treiben und trotzdem noch den Auslöser sauber erkennen?
Wie immer: mit
Event.target
Angenommen der Fall, wir haben wir es mit einer Liste von Radio-Groups zu tun, die jeweils z. B. 5 Auswahl-Alternativen bieten (sehr gut - gut - unentschieden -schlecht - ganz schlecht):
Wie müsste man nun z. B. im umschließenden Form-Element die Events abfangen?Wenn ein Radiobutton der Auslöser war, bekommst du mit
Event.target.name
die Gruppe dieses Radio-Buttons; mitEvent.target.value
dessen Wert.In diesem Beispiel, wo auf
change
reagiert wird, was nur von den Radiobutton ausgelöst worden sein kann, mag das ohne weitere Abfrage genügen. Ansonsten inif (Event.target.nodeName === "INPUT")
kapseln.
Schonmal vielen Dank.
Verstehe ich das richtig so, dass der Event schlussendlich sowieso immer im Window-Objekt landet? (Ist das so richtig benannt?).
Was spräche also dagegen, die Eventlistener gleich dort zu montieren? Dauert das sooo viel länger, bis der Event z. B. vom Form-Element bis zur Wurzel durchgereicht wurde? Oder könnte er unterwegs verloren gehen?
Wenn ohnehin alle relevanten Elemente des Dokumentes eine ID bekommen, könnte man dort doch zentral auswerten, oder?
Liebe Grüße
Tom S.
Tach!
Verstehe ich das richtig so, dass der Event schlussendlich sowieso immer im Window-Objekt landet? (Ist das so richtig benannt?).
Was spräche also dagegen, die Eventlistener gleich dort zu montieren?
Organisation. Man will keinen Gott-Eventhandler, der allen Mist einsammelt, und dann zentral alle individuellen Anforderungen verarbeiten muss. Sondern man möchte nur die Events individuell behandeln, die am übergeordneten Element ankommen.
Wenn ohnehin alle relevanten Elemente des Dokumentes eine ID bekommen, könnte man dort doch zentral auswerten, oder?
Könnte man, will man aber nicht. Besonders nicht, wenn das Projekt größer als eine Handvoll Zeilen ist.
dedlfix.
@@Rolf b
Ist euch eigentlich aufgefallen, dass bei aller Bedienbarkeit keiner darauf hingewiesen hat, wie man die Änderung des Radiobuttons per Script erkennt?
Nein. Nach der Reaktion von Becca hat wohl niemand Lust verspürt, sich des JavaScripts anzunehmen. Wer hier rumpöbelt, soll nicht auch noch belohnt werden.
Ansonsten wäre es mir ein Leichtes gewesen, auf mein Posting zu verweisen, aus dem @Orlok meine Gedanken abgeschrieben hat. 😆
LLAP 🖖
Hello,
das wäre sehr lobenswert gewesen. ;-)
Liebe Grüße
Tom S.
Ok, jetzt ich:
Und ich denke, jeder Benutzer sollte die Chance haben, ein Formular in aller Ruhe beklicken zu dürfen ohne dass bei jedem Klick Daten irgenwohin gespeichert werden. Das heißt, dass es einen dedizierten Button schon geben sollte für diejenigen, die nach einigem Klick und Klack den Beschluss gefasst haben, dass genug geklickt wurde und es an der Zeit ist, das Zusammengeklickte zu kommitten..
Dafür wird wohl jeder Klickser dankbar sein und auch die Tastaturfetischisten sollten ihren Spaß daran haben ohne jeden Tustendrack bereuen zu müssen.
Mit freundlichen Grüßen. Nur noch einen Klick...