PHP Checkbox - onchange

rocket81

Lt. Commander
Registriert
Dez. 2007
Beiträge
1.054
Hi,
Ich bastel grad an einer neuen Clanpage für unseren CoD Clan.
Und es geht um folgenden Programmfetzen:

Code:
  echo'<script type="text/javascript">
  function HideFields(state){
  	if(state == true){
  		document.getElementById(\'max\').style.display = "none";
  		document.getElementById(\'min\').style.display = "none";
  	}
  	else{
  		document.getElementById(\'max\').style.display = "";
  		document.getElementById(\'min\').style.display = "";
  	}
  }
  </script>
.....

<tr>
      <td><b>'.$_language->module['special_rank'].'</b></td>
      <td><input type="checkbox" name="special" onchange="javascript:HideFields(this.checked);" value="1" /></td>
    </tr>
    <tr>

Das funktioniert alles bis jetzt, allerdings gibts quasi einen Bug.
Wenn man diese Funktion auf der HP verwendet, und einen Hacken bei "Special Rank" macht, verschwinden zwar diese 2 Felder, bleiben "inhaltlich" aber leer, was nach dem bestätigen zu eine Fehlermeldung führt, dass nicht alle Daten eingeben wurden.

Ist jetzt vllt. etwas kompliziert erklärt deshalb sage ich jetzt einfach was ich mir als simpelste Lösung vorgestellt habe. :)

Die 2 Felder bleiben weiterhin versteckt wenn das Häckchen gesetzt wurde , allerdings soll der Input für beide Felder automatisch eine "0" sein.

Das müsste dann doch eigentlich hinter das "onchange", oder?

Ich bin totaler php Anfänger , und habe mich erst durch einige Tutorials gewälzt -> Grundlagen sind klar.
Aber bei spezifischeren Sachen muss ich leider nachfragen und mich von Problem zu Problem hangeln. :)

Wäre nett wenn ihr mir hier helfen könntet.
Danke.
 
Probiers mal so:
PHP:
<input type="checkbox" name="special" onclick="HideFields(this.checked);" value="1" />
 
Hmm, das versteh ich jetz nich? ^^
Er soll oben die Funktion schon aufrufen und die Felder verstecken...aber gleichzeitig den Inhalt der Felder auf "0" setzen (nicht löschen sondern mit der Zahl "0" füllen :))

EDIT: onklick oder onchanged oder egal? ^^
 
Achso, ja dann setzt du die Werte auf 0:
PHP:
document.getElementById('max').value = 0;
document.getElementById('min').value = 0;
Ggf. die Werte vor dem 0-Setzen auch zwischenspeichern, damit sie beim Einblenden der Felder wieder reingeschrieben werden und der Bentuzer das nicht machen muss; irgendwie so:
PHP:
        if(state == true){
          document.getElementById('max').style.display = "none";
          document.getElementById('min').style.display = "none";
          max_val = document.getElementById('max').value;
          min_val = document.getElementById('min').value
          document.getElementById('max').value = 0;
          document.getElementById('min').value = 0;
        }
        else{
          document.getElementById('max').style.display = "";
          document.getElementById('min').style.display = "";
          document.getElementById('max').value = max_val;
          document.getElementById('min').value = min_val;
        }
      }
Kann man bestimmt auch kürzer machen, aber JS ist auch nicht meine Welt :)
 
Zuletzt bearbeitet:
Das was du machen willst ist auch nicht PHP sondern JavaScript, also was ganz anderes.

onchange: Sobald der User was eingibt, sich das Feld also ändert, und das Eingabefeld wieder verlässt wird dieses Ereignis ausgelöst.
onclick: Hier wird das Ereignis beim Betreten des Eingabefelds ausgelöst bzw. beim Daraufklicken.

http://de.selfhtml.org/javascript/sprache/eventhandler.htm

Kenn mich jetzt auch nicht super in JS aus, aber die IDs in der document.getElementById(id) Funktion brauchst net escapen und ich würd auch onclick verwenden.

Mit display = "" willst du erreichen dass es wieder angezeigt wird? -> dann display = "block" verwenden.

Setzen kannst du die Werte doch einfach mit document.getElementById(id).value = 0;
 
Zurück
Oben