Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Checkbox deselektieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.02.2004
    Beiträge
    60

    Checkbox deselektieren

    Servus,

    ich habe eine PHP-Seite, auf der Tabellen dargestellt werden. Diese Tabellen enthalten in jeder Zeile zu Beginn eine Checkbox. Der Name der Box wird dynamisch vergeben (richtet sich nach Ergebnissen von SQL-Anfragen).
    die Zeilen sehen also wie folgt aus:
    Code:
    <input type="checkbox" name="diff1.12" onClick="check('diff1.12')" value="1.12">dahinter mehere spalten...unwichtig
    <input type="checkbox" name="diff1.11" onClick="check('diff1.11')" value="1.11">
    <input type="checkbox" name="diff1.10" onClick="check('diff1.10')" value="1.10">
    <input type="checkbox" name="diff1.09" onClick="check('diff1.09')" value="1.09">
    <input type="checkbox" name="diff1.08" onClick="check('diff1.08')" value="1.08">
    ...
    jetzt will ich mit Javascript prüfen:
    - welche Box beim Submit gesetzt wurde.

    Wie löse ich das am besten?
    clumsy
    Geändert von clumsy (12-07-2006 um 11:46 Uhr)

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Code:
    var inputs = document.getElementsByTagName('input');
    for ( var i = 0; i < inputs.length: i++ )
    {
       if ( inputs[i].type == 'checkbox' && inputs[i].selected == 'true' )
       {
          alert( inputs[i].value );
          break;
       }
    }
    Oder war es checked ?
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.02.2004
    Beiträge
    60
    Zitat Zitat von undefined
    Code:
    var inputs = document.getElementsByTagName('input');
    for ( var i = 0; i < inputs.length: i++ )
    {
       if ( inputs[i].type == 'checkbox' && inputs[i].selected == 'true' )
       {
          alert( inputs[i].value );
          break;
       }
    }
    Oder war es checked ?
    ja, ist checked
    sowas hab ich auch, aber das hilft mir nicht..ich muss mir merken, welche checkboxen selektiert sind, also speichere ich sie in ein array. wird eine checkbox wieder deaktiviert, so soll sie aus dem array geschmissen werden.

    bisher hab ich das hier:
    Code:
    #### PHP ########
    echo "<td nowrap><input multiple type=\"checkbox\" name=\"diff[]\" onClick=\"check2()\" value=\"".$result['Revision']."\"></td>";
    #### END PHP ########
    
    
    ### JAVASCRIPT:###########
    function check2() {
    	
    	whole_array = document.getElementsByName("diff[]");
    	for (i=0; i<whole_array.length; i++)
    	{	
    		checkbox = document.getElementsByName("diff[]")[i];
    		if ( checkbox.checked == true ) {
    			box.push(checkbox.value);
    		}
    	}
    ### END JAVASCRIPT:###########
    Die Funktion check2 wird also bei jedem Anklicken einer Checkbox aufgerufen.
    Wenn ich nun eine Checkbox wieder deselektieren will, wie bekomm ich das deselektierte Element aus dem array "box" raus?

    Kann doch nicht so schwer sein?! Aber ich schnall´s trotzdem nicht.

    Nochmal mein Ziel
    Im Grunde habe ich viele Checkboxen auf einer PHP-Seite. Werden mehr als 2 angewählt, so kommt ein alert und die zuletzt gewählte Checkbox wird deselektiert. Wird das Formular mit weniger als 2 selektierten Checkboxen abgeschickt, so kommt ebenfalls ein alert.
    Beim Submit wird eine neue PHP-Seite aufgerufen, auf der ich wissen muss, welche Checkboxen letztendlich angeklickt wurden.
    Das Problem ist nicht, jede Anforderung einzeln zu lösen, sondern alle zusammen!

    Eigentlich hab ich das bereits gelöst, aber auf eine ziemlich doofe Weise ..daher suche ich nach alternativen Lösungswegen...

    Bin für jeden Tip dankbar!
    Geändert von clumsy (12-07-2006 um 15:21 Uhr)

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Checked hat lese als auch Schreib zugriff
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.02.2004
    Beiträge
    60
    Zitat Zitat von undefined
    Checked hat lese als auch Schreib zugriff
    ich weiß hilft aber nicht der Lösung meines Ziels

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.12.2004
    Beiträge
    217
    Hallo clumsy,

    Wenn ich nun eine Checkbox wieder deselektieren will, wie bekomm ich das deselektierte Element aus dem array "box" raus?
    Bau doch dein Array "box" nach jedem Klick neu auf, dann hast du immer die aktuell selektierten Elemente drin.

    Beim Submit wird eine neue PHP-Seite aufgerufen, auf der ich wissen muss, welche Checkboxen letztendlich angeklickt wurden.
    Kannst du nicht über das "Value" entscheiden was geklickt wurde?

    Wenn nicht, kannst du "onsubmit" z. B. deine Checkboxen durchlaufen und das "name"-Attribut durch eine Zahl ersetzen. Dann bekommst du in PHP z. B. 1, 2, 3 (oder diff[1], diff[2]... usw. je nachdem wie du es machst).

    Grüße,
    nEox

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.02.2004
    Beiträge
    60
    danke! so hab ichs jetzt gemacht:
    Code:
    function check(revisionname) {
    	checkbox = document.getElementsByName(revisionname)[0];
    	if (checkbox.checked == true ) {
    		if ( box.length  == 0 ) {
    			box.push(checkbox.value);
    		}
    		else if ( box.length > 0) {
    			firstelement = box.shift();
    			box.push(firstelement);
    			box.push(checkbox.value);
    		}
    	}
    	else if ( checkbox.checked == false) {
    		for (i=0; i < box.length; i++) {
    			if ( box[i] == checkbox.value ) {
    				box.splice(i,1);
    			}
    		}
    		//		for (i=0; i < box.length; i++) {alert(box[i]);};
    	}
    
    	if (box.length > 2) {
    		alert('Please choose only 2 revisions');
    		checkbox.checked = false;
    		box.pop()
    	}
    }

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •