Ausgeblendete Felder werden wieder angezeigt

Diskutiere Ausgeblendete Felder werden wieder angezeigt im HTML Forum im Bereich Programmierung; Hallo, habe eine Input Form bei der einige Felder über onchange=script() ausgeblendet werden. Nach absenden über submit wird eine neue Seite mit...
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #1
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Hallo,

habe eine Input Form bei der einige Felder über onchange=script() ausgeblendet werden.
Nach absenden über submit wird eine neue Seite mit einer SQL Abfrage und einer Liste angezeigt.
Nach Rückkehr aus der Liste zur Eingabemaske werden die ausgeblendeten Felder angezeigt.

Die Ausblengung der Felder im Javascript wird folgendermaßen erzeugt:
document.getElementById("idjahr").style.display = "none";

Wie kann ich erreichen, dass die Felder nach wie vor ausgeblendet bleiben?

Bin für jeden Hinweis dankbar.
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #2
S
scatello
Well-known member
Beiträge
528
Punkte Reaktionen
44
Du musst in Zeile 354 dies eintragen:
Javascript:
<script>
    alert("Schade, wenn ich den ganzen Quellcode gepostet hätte, könnte man mir vielleicht helfen");
</script>
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #4
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Du musst in Zeile 354 dies eintragen:
Javascript:
<script>
    alert("Schade, wenn ich den ganzen Quellcode gepostet hätte, könnte man mir vielleicht helfen");
</script>

Weiß leider nicht wie ich das Coding hier einigermaßen strukturiert einbauen kann.
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #5
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Baue einen pageshow-Eventhandler ein welcher ebenfalls dein Script für die Ausblendungen aufruft.

Kenne mich in HTML bzw. Java-Script nicht so recht aus, deshalb verstehe ich nicht so recht, was ich genau einbauen soll.
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #6
S
Sempervivum
Well-known member
Beiträge
760
Punkte Reaktionen
125
Hallo @wgunter und willkommen im Forum!
Ich sehe da mehere Möglichkeiten, dein Problem zu lösen:
  1. Speichere den Zustand "ist ausgeblendet" browser-seitig im Sessionstorage, siehe z. B. hier:
    https://www.w3schools.com/jsref/prop_win_sessionstorage.asp
  2. Speichere den Zustand server-seitig in PHP in einer SESSION-Variablen.
  3. Organisiere das Ganze ohne neue Seiten zu laden indem Du die Daten aus der DB mit Ajax bzw. fetch holst.
3. wird wahrscheinlich zu kompliziert für dich.
1. würde konkret so aussehen:

Das Eintragen in den Sessionstorage nach dem Verbergen mit deiner vorhandenen Codezeile:
Code:
document.getElementById("idjahr").style.display = "none";
// Wir merken uns, dass das Eingabefeld verborgen ist:
sessionStorage.setItem('isHidden', 'true');

Und bei jedem Laden der Seite, indem Du dieses Skript an das Ende des body setzt:
Code:
// Prüfen ob das Eingabefeld verborgen werden muss:
if (sessionStorage.getItem('isHidden')) {
    // Eingabefeld verbergen:
    document.getElementById("idjahr").style.display = "none";
}
(ungetestet)
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #7
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Hallo @wgunter und willkommen im Forum!
Ich sehe da mehere Möglichkeiten, dein Problem zu lösen:
  1. Speichere den Zustand "ist ausgeblendet" browser-seitig im Sessionstorage, siehe z. B. hier:
  2. Speichere den Zustand server-seitig in PHP in einer SESSION-Variablen.
  3. Organisiere das Ganze ohne neue Seiten zu laden indem Du die Daten aus der DB mit Ajax bzw. fetch holst.
3. wird wahrscheinlich zu kompliziert für dich.
1. würde konkret so aussehen:

Das Eintragen in den Sessionstorage nach dem Verbergen mit deiner vorhandenen Codezeile:
Code:
document.getElementById("idjahr").style.display = "none";
// Wir merken uns, dass das Eingabefeld verborgen ist:
sessionStorage.setItem('isHidden', 'true');

Und bei jedem Laden der Seite, indem Du dieses Skript an das Ende des body setzt:
Code:
// Prüfen ob das Eingabefeld verborgen werden muss:
if (sessionStorage.getItem('isHidden')) {
    // Eingabefeld verbergen:
    document.getElementById("idjahr").style.display = "none";
}
(ungetestet)


Danke für die Info. Werde es mal versuchen.

EDIT:
Wie kann ich die Variable wieder löschen?
Habe es mit
sessionStorage.setItem('isHidden', 'false');
versucht - geht nicht. Die Variable sitzt auch noch, wenn ich die Seite neu starte.
 
Zuletzt bearbeitet:
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #8
S
Sempervivum
Well-known member
Beiträge
760
Punkte Reaktionen
125
Mein Code prüft nur, ob die Variable existiert, das ist auch der Fall, wenn sie den Wert 'false' hat. Du kannst sie löschen durch removeItem.
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #9
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Mein Code prüft nur, ob die Variable existiert, das ist auch der Fall, wenn sie den Wert 'false' hat. Du kannst sie löschen durch removeItem.

Danke, das funktioniert jetzt. Jetzt habe ich nur noch ein Problem.
Bei Neustart der Seite sitzt die Variable immer noch. Was kann man da noch tun?
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #10
T
tk1234
Well-known member
Beiträge
103
Punkte Reaktionen
8
Weiß leider nicht wie ich das Coding hier einigermaßen strukturiert einbauen kann.
Am besten irgendwo online stellen und hier verlinken.

Kenne mich in HTML bzw. Java-Script nicht so recht aus, deshalb verstehe ich nicht so recht, was ich genau einbauen soll.
Dann solltest du es einfach mal versuchen (ggf. auch mit den gegebenen Stichworten andere Quellen suchen) und bei Problemen mit dem konkreten Code nachfragen. Ich vermute aber dass du exakt das gleiche Problem hast wie das das ich mal mit genau dem Eventhandler gelöst hatte.

Bei Neustart der Seite sitzt die Variable immer noch. Was kann man da noch tun?
Definiere "Neustart der Seite". Nach dem Schließen des Browserfensters sollte sessionStorage eigentlich weg sein - ansonsten: siehe Eventhandler.
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #11
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Definiere "Neustart der Seite". Nach dem Schließen des Browserfensters sollte sessionStorage eigentlich weg sein - ansonsten: siehe Eventhandler.

Wenn ich das Browserfenster schließe ist alles gut.
Nur wenn ich im Firefox den Favoritenlink neu anklicke, ist die Variable noch erhalten.
Muss mich mal mit dem Eventhandler beschäftigen.
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #12
S
Sempervivum
Well-known member
Beiträge
760
Punkte Reaktionen
125
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #13
T
tk1234
Well-known member
Beiträge
103
Punkte Reaktionen
8
Das verstehe ich jetzt so, dass die Felder nur dann ausgeblendet bleiben sollen wenn man von der Liste zurück kommt. In dem Fall kannst Du dich auf "referer" beziehen, das ist die URL von der man kommt:
Ich würde eher mal darauf tippen dass über die zurück-Funktion im Browser wieder zum Formular gesprungen wird und da wird der Referrer eher nichts helfen - zumal der ohnehin ungeeignet ist um irgendwelche Entscheidungen auf seiner Basis zu treffen da er beliebig falsch sein oder ganz fehlen kann.
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #14
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Jetzt funktioniert es zu 90%.
Nur wenn ich die Seite nicht abschicke (kein Submit) und die Form neu aufrufe, bleiben die Felder ausgeblendet. Offensichtlich wird da die Funktion CheckHidden() nicht durchlaufen.

Mein Coding sieht folgendermaßen aus:

<script>
window.addEventListener('pageshow', Test);
function Test(event) {
sessionStorage.removeItem('isHidden');
}
</script>

<?php
echo '<script type="text/javascript">CheckHidden();</script>';
?>
</body>
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #15
T
tk1234
Well-known member
Beiträge
103
Punkte Reaktionen
8
Mein Coding sieht folgendermaßen aus:
Das ist ein unvollständiger Schnippsel des Codes anhand dessen sich nicht sagen lässt wo das Problem liegt (nur soviel: wenn du mit pageshow-Events arbeitest brauchst du sessionStorage nicht) - da musst du schon lauffähigen Code posten (am besten online stellen und verlinken).
 
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #16
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Das ist ein unvollständiger Schnippsel des Codes anhand dessen sich nicht sagen lässt wo das Problem liegt (nur soviel: wenn du mit pageshow-Events arbeitest brauchst du sessionStorage nicht) - da musst du schon lauffähigen Code posten (am besten online stellen und verlinken).

Leider darf ich keine externen Links hier posten (bin noch zu neu).

Habe die Datei hier angehängt.
 
Anhänge
  • suchen_neu.zip
    1,5 KB · Aufrufe: 3
  • Ausgeblendete Felder werden wieder angezeigt Beitrag #17
W
wgunter
Member
Beiträge
9
Punkte Reaktionen
0
Problem gelöst, ganz ohne pageshow-Events und sessionStorage.
Das Ein- und Ausblenden der Felder wird ja über Radiobuttons gesteuert.
Bisher wusste ich nicht, wie ich den Status der Radiobuttons ermitteln kann.
Das ist mir jetzt gelungen. Nach Rückkehr aus der Liste ermittle ich jetzt nur, welcher Button aktiv ist und dementsprechend werden die Felder wieder ausgeblendet oder auch nicht.

Ich danke allen mit den Tipps.
 
Thema:

Ausgeblendete Felder werden wieder angezeigt

Oben Unten