Benj: Checkbox deaktivieren = Selectbox auf wert "0" zurücksetzen

Hallo ich habe soweit die berechnungen hinbekommen wie ich es möchte es funktioniert auch zuverlässig nur eines möchte ich gerne noch undzwar, wenn man eine checkbox wieder deaktiviert dann solle die selectbox auf "bitte auswählen" zurückspringen und der Gesamtpreis auf 0. Mit welchem befehl mache ich das?

<title>Berechnung</title>

<script>
<!--

function aktualisieren()
{
                var gespreis = 0.00;
                for (var i = 1; i <= 3; i++)
{
var obj = document.getElementById(i);

if(obj.type == "text")
{  if(obj.value=="") {
    obj.value="0";
}
    gespreis += parseFloat(obj.value)/8*1;
}
    if(obj.tagName.toLowerCase() == "select")
{
    gespreis += parseFloat(obj.options[obj.selectedIndex].value);
}
    if(obj.tagName.toLowerCase() == "select1")
{
    gespreis += parseFloat(obj.options[obj.selectedIndex].value);
}
}
                document.getElementById('preis').value = gespreis.toFixed(2);
}
</script>

<form name="form2">

<select name="usbstick" id="1" onchange="aktualisieren()" disabled="">
<option value="0">Grösse auswählen</option>
<option value="1.00">4 GB Stick [+ 1.00€]</option>
<option value="2.00">8 GB Stick [+ 2.00€]</option>
<option value="3.00">16 GB Stick [+ 3.00€]</option>
<option value="4.00">32 GB Stick [+ 4.00€]</option>
<option value="5.00">64 GB Stick [+ 5.00€]</option>
</select>
<input type="checkbox" onclick="this.form.usbstick.disabled=(this.checked)?false:true;"> USB Stick Sichern
<p>

<select name="sdkarte" id="2" onchange="aktualisieren()" disabled="">
<option value="0">Grösse auswählen</option>
<option value="1.00">4 GB Karte [+ 1.00€]</option>
<option value="2.00">8 GB Karte [+ 2.00€]</option>
<option value="3.00">16 GB Karte [+ 3.00€]</option>
<option value="4.00">32 GB Karte [+ 4.00€]</option>
<option value="5.00">64 GB Karte [+ 5.00€]</option>
</select>
<input type="checkbox" onclick="this.form.sdkarte.disabled=(this.checked)?false:true;"> SD Karte Sichern
</p><p>
<input name="grösse" id="3" type="text" placeholder="Grösse eingeben" onchange="aktualisieren()" disabled="">
<input type="checkbox" onclick="this.form.grösse.disabled=(this.checked)?false:true;"> Festplatte auf DVD Sichern
</p><p>
<input name="Gesamtpreis" type="text" id="preis" placeholder="Gesamtpreis" readonly="">€
</p>
</form>

  1. Hallo,

    Hallo ich habe soweit die berechnungen hinbekommen wie ich es möchte es funktioniert auch zuverlässig nur eines möchte ich gerne noch undzwar, wenn man eine checkbox wieder deaktiviert dann solle die selectbox auf "bitte auswählen" zurückspringen und der Gesamtpreis auf 0. Mit welchem befehl mache ich das?

    Du musst nur den Value der Selectbox auf 0 setzen.

    Btw.: Sofern du kein HTML5 verwendest, sind IDs die mit einer Zahl beginnen nicht zulässig.

    vg ichbinich

    --
    Kleiner Tipp:
    Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
    1. Hallo,

      Hallo ich habe soweit die berechnungen hinbekommen wie ich es möchte es funktioniert auch zuverlässig nur eines möchte ich gerne noch undzwar, wenn man eine checkbox wieder deaktiviert dann solle die selectbox auf "bitte auswählen" zurückspringen und der Gesamtpreis auf 0. Mit welchem befehl mache ich das?

      Du musst nur den Value der Selectbox auf 0 setzen.

      Btw.: Sofern du kein HTML5 verwendest, sind IDs die mit einer Zahl beginnen nicht zulässig.

      vg ichbinich

      Wenn ich die selectbox auf 0 setze dann berechnet er doch keine summe wenn die box aktiviert ist oder?

      Die IDs dienen nur für den script zum errechnen der selectbox und eingabefeld oder?

      1. Hallo,

        Wenn ich die selectbox auf 0 setze dann berechnet er doch keine summe wenn die box aktiviert ist oder?

        Hast du das ausprobiert?

        Die IDs dienen nur für den script zum errechnen der selectbox und eingabefeld oder?

        IDs dienen dazu, ein Element eindeutig zu identifizieren.

        vg ichbinich

        --
        Kleiner Tipp:
        Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
        1. Hallo,

          Wenn ich die selectbox auf 0 setze dann berechnet er doch keine summe wenn die box aktiviert ist oder?

          Hast du das ausprobiert?

          ja habe ich funktioniert nicht.

          Die IDs dienen nur für den script zum errechnen der selectbox und eingabefeld oder?

          IDs dienen dazu, ein Element eindeutig zu identifizieren.

          wenn ich die IDs ändere dann erkennt der script nicht mehr die felder die berechnet werden sollen.

          vg ichbinich

          kann es sein das wir aneinander vorbei reden?

          1. Hallo,

            Wenn ich die selectbox auf 0 setze dann berechnet er doch keine summe wenn die box aktiviert ist oder?
            Hast du das ausprobiert?
            ja habe ich funktioniert nicht.

            Mir war bei deiner Aussage nicht klar, ob du überhaupt was genacht hast oder einfach nur Fragen stellst.

            Die IDs dienen nur für den script zum errechnen der selectbox und eingabefeld oder?
            IDs dienen dazu, ein Element eindeutig zu identifizieren.
            wenn ich die IDs ändere dann erkennt der script nicht mehr die felder die berechnet werden sollen.

            Du musst deine Funktion aktualisieren() natürlich auch noch anpassen. Wenn deine Selectboxen jetzt bspw. sb1,sb2,sb3 heissen dann musst du auch var obj = document.getElementById('sb' + i); schreiben.

            Nun zu deinem Problem:

            Du brauchst eine Funktion, die bei Betätigung der Checkbox aufgerufen wird.
            Dieser übergibst du dann die betätigte Checkbox und die dazugehörige Selectbox als Parameter.
            Also Funktionsaufruf im handler: handleCheckbox(this, document.getElementById('sb1'));

            Die Funktion checked/unchecked die Checkbox, setzt dann die Selectbox auf 0 und rufst aktualisieren() auf.

            Zusammen sieht das dann so aus:

            function handleCheckbox(cb, sb) {  
              sb.disabled = cb.checked ? false : true;  
              
              if(!cb.disabled) {  
                sb.value = 0;  
                aktualisieren();  
              }  
            }
            

            vg ichbinich

            --
            Kleiner Tipp:
            Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
            1. Du brauchst eine Funktion, die bei Betätigung der Checkbox aufgerufen wird.
              Dieser übergibst du dann die betätigte Checkbox und die dazugehörige Selectbox als Parameter.
              Also Funktionsaufruf im handler: handleCheckbox(this, document.getElementById('sb1'));

              Die Funktion checked/unchecked die Checkbox, setzt dann die Selectbox auf 0 und rufst aktualisieren() auf.

              Zusammen sieht das dann so aus:

              function handleCheckbox(cb, sb) {

              sb.disabled = cb.checked ? false : true;

              if(!cb.disabled) {
                  sb.value = 0;
                  aktualisieren();
                }
              }

              
              >   
              > vg ichbinich  
              >   
                
              Hallo, Danke für die schnelle Antwort.  
              ich habe die IDs geändert und ja ich wusste nicht das man vor der zahl nochwas einfügen kann.  
                
              Das mit dem übergeben von Parameter usw begreife ich nicht.  
              Kannst du mir das genauer erklären mit der Funktion für die checkbox die bei bestätigung aufgerufen wird und auch wie dieser parameter an die selectbox übergeben wird.  
                
              
              
              1. Danke hat so funktioniert wie du es geschrieben hast musste nur etwas umbauen danke.