Philip: Funktionen zusammenfassen

Hi,

nach stundenlanger Suche und Rumprobiererei hab ich gestern doch tatsächlich ein Script zustande gebracht :D

Also, ich habe zwei Checkboxen, von denen beim Absenden des Formulars mindestens eine ausgewählt sein muss. Wenn beide Checkboxen abgewählt werden, kommt ein Hinweis, dass mindestens eine Box aktiviert sein muss. Das Script an sich funktioniert, ist aber wohl etwas umständlich. Ich möchte nämlich, dass die Checkbox, die als letzte deaktiviert wird durchs Script aktiviert bleibt.

Das habe ich jetzt nur über zwei separate Scripte geschafft:

<form name="formular">

<input type=checkbox checked name="r" onClick="check_thema1()">
<input type=checkbox checked name="l" onClick="check_thema2()">

...

<script type="text/javascript">
function check_thema1() {
 if(document.formular.r.checked==false && document.formular.l.checked==false)
 {
    document.formular.r.checked = true
    alert("Bitte mindestens ein Thema angeben!");
    return false;
 }
}
</script>

<script type="text/javascript">
function check_thema2() {
 if(document.formular.r.checked==false && document.formular.l.checked==false)
 {
    document.formular.l.checked = true
    alert("Bitte mindestens ein Thema angeben!");
    return false;
 }
}
</script>

Ich könnte das ganze natürlich auch so machen:

<form name="formular">

<input type=checkbox checked name="r" onClick="check_thema()">
<input type=checkbox checked name="l" onClick="check_thema()">

...

<script type="text/javascript">
function check_thema() {
 if(document.formular.r.checked==false && document.formular.l.checked==false)
 {
    document.formular.r.checked = true
    alert("Bitte mindestens ein Thema angeben!");
    return false;
 }
}
</script>

Das hat aber zur Folge, dass beim Abwählen der letzten Box immer die Box r aktiv bleibt. Also, wenn ich als letzte Box r abwähle, bleibt r aktiv, wähle ich aber als letzte l ab, bleibt l deaktiviert und r wird aktiviert.

Natürlich macht das keinen Unterschied für die Funktion des Scripts, aber es sieht halt einfach unschön aus wenn beim Abwählen die andere Box aktiviert wird - und ich bin halt Perfektionist :)

Kann man das ganze also zusammenschustern?

  1. Kann man das ganze also zusammenschustern?

    Wie wärs damit:

    <form>
    <input type="checkbox" id="r" onclick="check_thema(this)" checked="checked"  />
    <input type="checkbox" id="l" onclick="check_thema(this)" checked="checked" />

    ...

    <script type="text/javascript">
    function check_thema(last) {
      if(!document.getElementById('r').checked && !document.getElementById('l').checked) {
        last.checked = true;
        alert("Bitte mindestens ein Thema angeben!");
       }
    }
    </script>

    1. Wie wärs damit:

      Naja, damit wäre es wohl perfekt :D

      Wunderbar, vielen Dank.

    2. <form>
      <input type="checkbox" id="r" onclick="check_thema(this)" checked="checked"  />
      <input type="checkbox" id="l" onclick="check_thema(this)" checked="checked" />

      ...

      <script type="text/javascript">
      function check_thema(last) {
        if(!document.getElementById('r').checked && !document.getElementById('l').checked) {
          last.checked = true;
          alert("Bitte mindestens ein Thema angeben!");
         }
      }
      </script>

      oder ganz ohne ID (kann man ein Formularelement ohne Namen auf dem Server auswerten?) und die getElement Funktion:

      <input type="checkbox" name="r" onclick="check_thema(this)" checked="checked" >

      <input type="checkbox" name="l" onclick="check_thema(this)" checked="checked">

        
      <script type="text/javascript">  
      function check_thema(last) {  
         if(!last.form.r.checked && !last.form.l.checked) {  
           last.checked = true;  
           alert("Bitte mindestens ein Thema angeben!");  
          }  
       }  
      </script>  
      
      

      Struppi.

      --
      Javascript ist toll (Perl auch!)
      1. Mehr als ein Javascriptfehler kommt da bei mir aber nicht zustande :)

        1. Mehr als ein Javascriptfehler kommt da bei mir aber nicht zustande :)

          Dann hast du falsch abgeschrieben :-)

          Struppi.

          --
          Javascript ist toll (Perl auch!)
      2. Ne, copy'n'paste ;)

        Geht das denn so wie es da steht bei dir?

        Bei mir meckert er: Zeile 7, Zeichen 4, Objekt erforderlich. Das ist hier jetzt die Zeile mit der if-Anweisung.

        1. Geht das denn so wie es da steht bei dir?

          weitestgehend, es muss nur das formular vervollständigt werden.

          <script type="text/javascript">
          function check_thema(last) {
             if(!last.form.r.checked && !last.form.l.checked) {
               last.checked = true;
               alert("Bitte mindestens ein Thema angeben!");
              }
           }
          </script>
          </head>
          <body >

          <form action="#" >
          <input type="checkbox" name="r" onclick="check_thema(this)" checked="checked" >
          <input type="checkbox" name="l" onclick="check_thema(this)" checked="checked">
          </form>

          Bei mir meckert er: Zeile 7, Zeichen 4, Objekt erforderlich. Das ist hier jetzt die Zeile mit der if-Anweisung.

          Hast du den Elementen einen Namen gegeben?
          Die ID ist hier überflüssig.

          Struppi.

          --
          Javascript ist toll (Perl auch!)
          1. ...

            Man sollte vielleicht form und nicht from schreiben - dann klappt das natürlich auch mit deinem Script :D

            Vielen Dank :)