Checkbox-Problem

horst-t

Grünschnabel
Hallo @ all,

ich habe ein Problem mit einem admin-bereich eines shops.
es sind alle produkte aufgelistet und mit einer checkbox zum auswählen jedes produktes versehen.
es sollen maximal 12 produkte gewählt werden können.

function chk_anz(feld)
{
var anzahl = document.formular.anz_wahl.value;
anzahl++;
document.formular.anz_wahl.value = anzahl;

if ( anzahl > 12 )
{
alert("Es können maximal 12 Produkte für die Startseite definiert werden.");
anzahl--;
document.formular.anz_wahl.value = anzahl;
var check_box = "product"+feld;
document.formular.elements[check_box].checked = false;
}
}

eins von sehr sehr vielen checkboxen:
<input type="checkbox" name="product31" value="31" onClick="chk_anz(31)>

eine funktion prüft beim anklicken der checkbox, wieviele produkte bereits gewählt sind. ein textfeld gibt die anzahl aus.
sind mehr als 12 produkte gewählt, wird die anzahl zurückgesetzt und die geklickte checkbox soll wieder deaktiviert werden.

es nicht. ein fehler wird auch nicht ausgegeben.
ich weiß nicht mehr, was ich noch probieren soll !

danke im voraus...
 
Hi,

versuch es mal hiermit:
Code:
var intAnzahl = 0;   // Anzahl gesetzter Checkboxen
var intGesamt = 12;  // Gesamtanzahl Checkboxen, die gesetzt werden dürfen

function countChecks(objCheck){
     // Falls die Checkbox angewählt wurde
     if(objCheck.checked == true){
          intAnzahl++;
          // Falls die Gesamtanzahl überschritten wurde
          if(intAnzahl > intGesamt){
               alert("Maximal " + intGesamt + " Checkboxes auswählen!");
               intAnzahl--;               // Anzahl wieder zurücksetzen
               objCheck.checked = false;  // Checkbox wieder abwählen
          }
     // Falls eine Checkbox wieder abgewählt wird
     }else{
          intAnzahl--;  // Anzahl dekrementieren
     }
}
Das Script wird im onclick-Event der Checkboxen aufgerufen und hat immer die
Form:

&nbsp;&nbsp;<input type="checkbox" name="product31" value="31" onclick="countChecks(this)">1


Ciao
Quaese
 
@Quaese,

danke für die schnelle antwort. war 'n guter ansatz --> aber immernoch nicht.

ich habe eine textfeld als hilfsausgabe eingefügt

Code:
function chk_anz(feld)
{
var anzahl = document.formular.anz_wahl.value;
anzahl++;
document.formular.anz_wahl.value = anzahl;

if ( anzahl > 3 )
	{
	alert("Maximal 3 Produkte.");
	anzahl--;                                                                          // anzahl zurücksetzen
	document.formular.anz_wahl.value = anzahl;         // zurückgesetzte anzahl ausgeben
	var check_box = "product"+feld;                                  // geklickte checkbox
	document.formular.elements[check_box].checked = false;
	}
}

<input type="checkbox" name="product31" value="31" onClick="chk_anz(31)>

der name der checkbox (z.b. product31) wird in der funktion richtig zusammengesetzt. ich kann aber mit
document.formular.elements[check_box].checked = false;
oder
ocument.formular.check_box.checked = false;

nicht darauf zugreifen und den status (gewählt / nicht gewählt) ändern.

wo ist der fehler!
ich finde keinen... :-((

mfg
 
@all,

ich hab den fehler gefunden.

die daten kommen aus einer db.
mein kunde hat produkte erfasst und die gleiche prod_id vergeben --> somit gibt's z.b. mehrere produkte mit der prod_id "31".
also auch mehrere checkboxen mit dem namen "31" --> das darf nicht sein

also der quelltext ist OK.

mfg
 
Hi,

das Script, das ich gepostet hatte, ist unabhängig vom jeweiligen Name des
Input-Feldes (Duplikate sind ebenso zulässig). Es zählt lediglich die "gecheckten"
Optionen.

Weiterhin berücksichtigt es die Möglichkeit, dass eine Checkbox wieder abgewählt wird!

Ciao
Quaese
 

Neue Beiträge

Zurück