dominikj: Radiobuttons Problem!

Hallo,

ich habe folgendes HTML-Dokument:

<form name="form1" action="?go=view&view=compare" method="POST">
 <input type="radio" name="compare1" value="1">
 <input type="radio" name="compare2" value="1"><br>
 <input type="radio" name="compare1" value="2">
 <input type="radio" name="compare2" value="2"><br>
 <input type="radio" name="compare1" value="3">
 <input type="radio" name="compare2" value="3"><br>
</form>

Die Radioboxen 'compare1' sowie 'compare2' dürfen niemals den gleichen Wert (value) haben.
Leider kenne ich mich mit javascript nochnicht so aus.
Wäre sehr nett, wenn mir einer von euch unter die arme greifen könnte.

MfG,

dominikj

  1. Hi,

    also, soweit ich weiß haben radio-Buttons des gleichen Typs immer den gleichen Namen, aber einen anderen Value, damit du nachher auslesen kannst, welchen Radiobutton du genau angeklickt hast.

    Also:

    <input type="radio" name="pizza" value="Salami">
     <input type="radio" name="pizza" value="Tono"><br>
     <input type="radio" name="hunde" value="collie">
     <input type="radio" name="hunde" value="dalmatiner"><br>
     <input type="radio" name="musik" value="rock">
     <input type="radio" name="musik" value="hiphop"><br>

    Jetzt hast du 6-Radiobuttons von jeweils 3 Typen.

    So habe ich das immer gemacht. Anderes Bespiel:

    Welches Geschlecht haben Sie?
     <input type="radio" name="geschlecht" value="m">
     <input type="radio" name="geschlecht" value="w">

    Hoffe, das hilft dir ein bißchen weiter.
    GRüße,
    Thorsten F.

    1. Hello out there!

      <input type="radio" name="pizza" value="Salami">
      <input type="radio" name="pizza" value="Tono"><br>
      <input type="radio" name="hunde" value="collie">
      <input type="radio" name="hunde" value="dalmatiner"><br>
      <input type="radio" name="musik" value="rock">
      <input type="radio" name="musik" value="hiphop"><br>

      Hoffe, das hilft dir ein bißchen weiter.

      Nein. Es soll ja gerade verhindert werden, dass der Collie Salami frisst und Hiphop hört. Nur eben nicht 3 Gruppen mit jeweils 2 Items, sondern 2 Gruppen mit jeweils 3 Items.

      Dazu bedarf es JavaScripts (und serverseitiger Prüfung wegen Nutzer ohen JavaScript); die Kategorie war richtig gewählt.

      See ya up the road,
      Gunnar

      --
      “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
      1. Hello out there!

        <input type="radio" name="pizza" value="Salami">
        <input type="radio" name="pizza" value="Tono"><br>
        <input type="radio" name="hunde" value="collie">
        <input type="radio" name="hunde" value="dalmatiner"><br>
        <input type="radio" name="musik" value="rock">
        <input type="radio" name="musik" value="hiphop"><br>

        Hoffe, das hilft dir ein bißchen weiter.

        Nein. Es soll ja gerade verhindert werden, dass der Collie Salami frisst und Hiphop hört. Nur eben nicht 3 Gruppen mit jeweils 2 Items, sondern 2 Gruppen mit jeweils 3 Items.

        Das ist richtig

        Dazu bedarf es JavaScripts (und serverseitiger Prüfung wegen Nutzer ohen JavaScript); die Kategorie war richtig gewählt.

        Könntest du oder wer anders da vllt eine Hilfestellung geben?

        See ya up the road,
        Gunnar

        1. Dazu bedarf es JavaScripts (und serverseitiger Prüfung wegen Nutzer ohen JavaScript); die Kategorie war richtig gewählt.

          Könntest du oder wer anders da vllt eine Hilfestellung geben?

          http://de.selfhtml.org/javascript/objekte/elements.htm hier insebsonder http://de.selfhtml.org/javascript/objekte/elements.htm#checked und http://de.selfhtml.org/javascript/objekte/elements.htm#value

          Du musst dir also zwei Schleifen bauen in denen du rausfindest welche Box angekreuzt ist und deren value ermitteln und dann miteinander vergleichen

          Struppi.

          --
          Javascript ist toll (Perl auch!)
          1. Danke für die Hilfe, nur leider funktioniert das alles nicht so wie ich will.
            Bin noch nicht so fit in Javascript...

          2. Hello out there!

            Du musst dir also zwei Schleifen bauen in denen du rausfindest welche Box angekreuzt ist und deren value ermitteln und dann miteinander vergleichen

            Äh, nö. Das hieße, dem Benutzer erst zu erlauben, eine falsche Auswahl zu machen, und beim Absenden des Formulars zu sagen „nö, is’ nich’“.

            Besser ist es, den Nutzer gar nicht erst eine falsche Auswahl machen zu lassen. Also beim Auswählen (http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick@title=onclick) eines Items einer Liste das entsprechende Item aus der anderen Liste nicht auswählbar (http://de.selfhtml.org/javascript/objekte/elements.htm#disabled@title=disabled) zu machen, die anderen aber auswählbar.

            So etwa: http://gunnarbittersmann.de/2006/form-items-disabled-20060814.html

            See ya up the road,
            Gunnar

            --
            “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
            1. Moin!

              Besser ist es, den Nutzer gar nicht erst eine falsche Auswahl machen zu lassen. Also beim Auswählen (http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick@title=onclick) eines Items einer Liste das entsprechende Item aus der anderen Liste nicht auswählbar (http://de.selfhtml.org/javascript/objekte/elements.htm#disabled@title=disabled) zu machen, die anderen aber auswählbar.

              Als "Javascript-Gimmick" sinnvoll, als endgültige Auswahlverhinderungslösung natürlich nicht. Das muß man schon serverseitig nochmal nachprüfen <Gebetsmühle/>. :)

              - Sven Rautenberg

              --
              "Love your nation - respect the others."
              1. Hello out there!

                Als "Javascript-Gimmick" sinnvoll, als endgültige Auswahlverhinderungslösung natürlich nicht. Das muß man schon serverseitig nochmal nachprüfen <Gebetsmühle/>. :)

                Ja, klar. Ich wollte mich nur nicht wiederholen.

                Ich mahle schon genug Gebetsmühlen hier. ;-)

                See ya up the road,
                Gunnar

                --
                “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
          3. Dazu bedarf es JavaScripts (und serverseitiger Prüfung wegen Nutzer ohen JavaScript); die Kategorie war richtig gewählt.

            Könntest du oder wer anders da vllt eine Hilfestellung geben?

            http://de.selfhtml.org/javascript/objekte/elements.htm hier insebsonder http://de.selfhtml.org/javascript/objekte/elements.htm#checked und http://de.selfhtml.org/javascript/objekte/elements.htm#value

            Du musst dir also zwei Schleifen bauen in denen du rausfindest welche Box angekreuzt ist und deren value ermitteln und dann miteinander vergleichen

            Struppi.

            ich habe nun folgendes:

            [javascript]
             radioset() {
              for(i=0;i<document.form1.compare1.length;i++) {
                if (document.form1.compare1[i].checked == true) {
               document.form1.compare2[i].disabled=true;
               }
               else
               {
               document.form1.compare2[i].disabled=false;
               }
               if (document.form1.compare2[i].checked == true) {
                 document.form1.compare1[i].disabled=true;
               }
               else
               {
                 document.form1.compare1[i].disabled=false;
               }
              }
            }

            function radiocheck() {
              for(i=0;i<document.form1.compare1.length;i++) {
               if (document.form1.compare1[i].checked == true) {
                 checked1=i;
               }
               if (document.form1.compare2[i].checked == true) {
                 checked2=i;
               }
              }
              if (checked1 == "1" && checked2 == "1") {
                window.location.href = "?go=view&view=compare&id1="checked1"&od2="checked2;
              }
              else
              {
                alert('Bitte zwei radiobuttons auswählen!');
              }
            }
            [/javascript]

            Jedoch funktioniert die erste funktion nur, wenn die zweite nicht eingebaut ist.
            Wie müsste das window.location.href z.B. aussehen? damit ich die ids übermitteln kann?

            1. Hello out there!

              radioset() {

              Du meinst function radioset() {?

              if (document.form1.compare1[i].checked == true) {

              document.form1.compare1[i].checked ist ein boolscher Wert, wozu der Vergleich gegen true? [http://forum.de.selfhtml.org/archiv/2006/2/t124010/#m798641]

              if (document.form1.compare1[i].checked == true) {
                 document.form1.compare2[i].disabled=true;
                 }
                 else
                 {
                 document.form1.compare2[i].disabled=false;
                 }

              Du willst also document.form1.compare2[i].disabled den negierten Wert von document.form1.compare1[i].checked zuweisen. Also ganz einfach:

              document.form1.compare2[i].disabled = !document.form1.compare1[i].checked;

              function radiocheck() {
              [⋮]
                if (checked1 == "1" && checked2 == "1") {

              Damit fragst du, ob jeweils das zweite Item jeder Liste ausgewählt wurde. Ist es das, was du willst?

              See ya up the road,
              Gunnar

              --
              “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)