Radio wieder abwählen

  • Hallo allerseites,
    befor das getöse anfängt ich solle checkboxen wählen bitte erstmal zu ende lesen :D

    Ich erstelle gerade eine Auswahlmöglichkeit, ein user kann mit dieser eine Datenbank nach bestimmten einträgen durchsuchen welche seinen Kriterien entspricht und zwar via Radios weil er nur eine Auswahl pro Kategorie treffen soll(keine Checkbos).
    Es gibt mehrere Kategorien.
    Beispiel:
    ======
    Kat.1
    -------
    o-Kriterieum1
    o-Kriterieum2
    o-Kriterieum3
    ======
    Kat.2
    --------
    o-Kriterieum1
    o-Kriterieum2
    o-Kriterieum3
    ======
    Kat.3
    -------
    o-Kriterieum1
    o-Kriterieum2
    o-Kriterieum3

    usw.


    Also folgendes Problem, in einer While-Schleife werden sowohl Radios als auch die Kategorien erstellt bis hierhin habe ich keine Probleme.
    Allerdings kann man die Radios nicht abwählen was mir n Dorn im Auge ist, kann man das nicht irgendwie lösen?(außer einen zusätzlichen Radio der die auswahl aufheben soll.)?

    Also im grundegenommen habe ich zwei möglichkeiten,
    Checkboxen: darf aber nur eine Pro kategorie anwählbar sein. oder
    Radio: Müssen wieder abwählbar seien

    Ich denk ma das ich da um JavaScript nicht drumrum kommen werde.

    Habe gegoogelt nichts gefunden
    SuFu ebenfalls benuzt, nichts gefunden

    Gruß
    Gim

  • Danke erstmal für die Stützen :)
    bin allerdings nicht so in JavaScript drinn wie manch anderer :oops:

    hab das erstmal so versucht

    Code
    function abwahl()
    {
        var test = document.getElementById('test').selected = true;
    
        if(test == true)
        {
            document.getElementById('test').selected = false ;
        }
    }

    und der radio sieht nun so aus.

    PHP
    echo "<input type='radio' id='test' onclick=\"abwahl();\" name='float[$bezeichnung]' onChange=\"submit();\" value='".$valFloat."'/>$valFloat<br>";

    In der Fehlerkonsole steht auch keine Fehlemeldung :shock:

    Und der Radio lässt sich auch nicht abwählen...wie son Diktator ey ^^

  • Also, des kann so nie im leben funktionieren.

    Code
    function abwahl()
    {
        var test = document.getElementById('test').selected = true;
    
        if(test == true)
        {
            document.getElementById('test').selected = false ;
        }
    }


    Wenn du schreibst test ist element.selected, welches wiederrum true ist, dann IST test zwangsläufig true. Du kannst schreiben

    Code
    if (element.selected=true) {

    Dann prüfst du, ob das selected nun auf true gesetzt werden konnte. Eine Variablenzuweisung gibt nichts zurück. Das müsste so aussehen:

    Code
    function abwahl() {
        if(element.selected[B]==[/B]true) {
           // Man bemerke die beiden ==, damit wird geprüft, OB das selceted true ist
           element.selected=false;
        }
    }

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Also, des kann so nie im leben funktionieren.

    Code
    function abwahl()
    {
        var test = document.getElementById('test').selected = true;
    
        if(test == true)
        {
            document.getElementById('test').selected = false ;
        }
    }

    Wenn du schreibst test ist element.selected, welches wiederrum true ist, dann IST test zwangsläufig true. Du kannst schreiben

    Code
    if (element.selected=true) {

    Dann prüfst du, ob das selected nun auf true gesetzt werden konnte. Eine Variablenzuweisung gibt nichts zurück. Das müsste so aussehen:

    Code
    function abwahl() {
        if(element.selected[B]==[/B]true) {
           // Man bemerke die beiden ==, damit wird geprüft, OB das selceted true ist
           element.selected=false;
        }
    }

    Wie peinlich ey, erst auf true setzen und dann prüffen ob true ist, ich überasch mich immer und immer wieder selbst. :smilie227:
    Danke erstmal. ich versuchs mal ^^

  • Der Gedanke ar der richtige ;)

    Code
    var test = (element.selected=true);

    Hätte warscheinlich das ergebnis gebracht, des du gewollt hättest, sicher bin ich mir aber nicht.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Das funktioniert zwar abern nicht so wie es soll.:lol:
    mit "selected" passiert da nichts

    aber mit "checked"(thx.Dodo:))

    Code
    function abwahl()
    {    
        if(document.getElementById("test").checked == true)
        {
            document.getElementById("test").checked = false ;
        }
    }

    So wie ich das sehe, prüft der Script ob dieser Radio mit der Id Test auf true streht, wenn das der fall ist dann switcht er auf false. Was heist das der Radio niemals True ist? (bin hiermit zummindest meinem Ziel näher als sonst:D)
    Und irgendwie wird nur der erste Radio mit dieser Function belegt .
    Habe auch schon mit gelElementsById versucht aber dies kennt JS nicht sagte mir die Fehelrkonsole.

  • Code
    function deselect_all()
    {
            var f = document.getElementById("formular_id");
            for(var i = 0; i < f.elements.length; i++)
            {
                    if(f.elements[i].type == "radio")
                            f.elements[i].checked = false;
            }
    }
    HTML
    <form action="..." method="..." id="formular_id">
      ...
      <input type="button" onclick="deselect_all()" value="Alles deselektieren!" />
      ...
    </form>

    Wenn ich nicht ganz falsch liege, sollte das klappen.

    Edit1: Algorithmus verbessert
    Edit2: Ausdruck ausgebessert
    Edit2: Eingerückt

    Something big is coming. And there will be pirates and ninjas and unicorns...

    3 Mal editiert, zuletzt von Dodo (25. April 2010 um 16:34)

  • Code
    function deselect_all()
    {
            var f = document.getElementById("formular_id");
            for(var i = 0; i < f.elements.length; i++)
            {
                    if(f.elements[i].type == "radio")
                            f.elements[i].checked = false;
            }
    }
    HTML
    <form action="..." method="..." id="formular_id">
      ...
      <input type="button" onclick="deselect_all()" value="Alles deselektieren!" />
      ...
    </form>

    Wenn ich nicht ganz falsch liege, sollte das klappen.

    Edit1: Algorithmus verbessert
    Edit2: Ausdruck ausgebessert
    Edit2: Eingerückt

    Hmm sollen ja nicht all auf false gesetzt werden:o
    Sondern nur der angeklickt wurde. :)

  • da radiobuttons sowieso false sind, solange sie nicht angeklickt wurden, macht das keinen unterschied ;)

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Wenn du ein select-Feld benutzt ist das kein Problem, sieht man häufiger, dass es da einen leeren Eintrag gibt... Oder Radio-Button mit der Option "keine" o.ä., sieht alles besser aus als so ein separater Button und klappt ohne JS...