Website Textfeld aktivieren wenn Checkbox aktiviert wird

Nemesis

Nemesis

N3RD
Hi,
ich habe hier eine Liste von Checkboxen, die dynamisch anhand einer Datenbankabfrage erstellt wird. zu jeder Checkbox gehört ein Textfeld. Mit der Checkbox wird der Artikel ausgewählt und in das Textfeld die gewünschte Anzahl eingegeben.
Ich hätte nun gerne, dass aber nur die Textfelder aktiv sind, deren Checkboxen auch angehakt sind.
Die Checkboxen und Textfelder werden per POST in jeweils einem array übergeben, dann wird mit einer Schleife errechnet wieviel von jedem Artikel angefordert werden muss.

Das ganze mache ich bislang etwas unsauber:
PHP:
echo '<form name="Artikel" action="'.$_SERVER['PHP_SELF'].'" method="POST">';
			echo 'Artikel:<br>';
			while($artikel = mssql_fetch_assoc($moegliche_Artikel))
			{		
				$q_vorbelegungArtikel = "SELECT StandMenge, Einheit FROM WK50Artikel WHERE Artikel='".$artikel['Artikel']."';";
					$vorbelegungArtikel = mssql_query($q_vorbelegungArtikel);
					$vorbelegungArtikel = mssql_fetch_assoc($vorbelegungArtikel);
					$Einheit = $vorbelegungArtikel['Einheit'];
					$vorbelegungArtikel = $vorbelegungArtikel['StandMenge'];
			
				echo '<input type="checkbox" name="Artikel[]" value="'.$artikel['Artikel'].'" >'.$artikel['Artikel'].":   ";
				echo '<input type="text" name="AnzArtikel[]" style="text-align: right" size="5" value="'.$vorbelegungArtikel.'"> '.$Einheit.'<br>';
			}
			echo '<input type="submit" value="Hinzufuegen">';
		echo '</form>';

und verarbeitet wird es dann in einer foreach-Schleife, die das Artikel-Array durchläuft und gleichzeitig über ein NEXT($AnzArtikel) das Array mit der Anzahl.
Problem ist jetzt:
Wenn z.B. jemand einen Haken bei Artikel 3 setzt und aber bei Artikel 1 eine Anzahl eintippt, wird Artikel 3 mit der Anzahl von Artikel 1 berechnet, das soll aber nicht gehen, also möchte ich das Textfeld nur aktivieren, wenn auch der zugehörige Artikel aktiviert wurde.

Mit Javascript dürfte das schwierig werden, da ich ja die ausgabe der Checkboxen dynamisch über eine schleife mache.

kann man das sonst noch irgendwie lösen ?

Danke !
 
Ich bin mir nicht sicher aber du köntest es so versuchen:

Geb den Checkboxen und Textfeldern einen bestimmten Namen z.B.
Wenn der Artikel die Artikelnummer 150682 ist, dann vergebe für die ID der Checkbox ChB150682 und für die ID des Textfeldes TeF150682.

Dann könntest du per getelementbyid auf Textfeld + Checkbox zugreifen.

Wird dann ChB150682 aktiviert dann muss eine Funktion aufgerufen die TeF150682 aktiviert.
 
Hi,

nach ducky_boy gibt's folgende Loesung, die, denk ich, leicht zu verstehen ist.

Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Unbenanntes Dokument</title>
<script language="javascript" type="text/javascript">
	
	function activateTextBox(senderID)
	{
		document.getElementById('tb'+senderID).disabled = !document.getElementById('cb'+senderID).checked;
		/*if(document.getElementById('cb'+senderID).checked)
		{
			document.getElementById('tb'+senderID).disabled = false;
		}
		else
		{
			document.getElementById('tb'+senderID).disabled = true;
			document.getElementById('tb'+senderID).value = '';
		}*/
	}
</script>
</head>

<body>
<input type="checkbox" id="cb1" onclick="javascript:activateTextBox(1);" />&nbsp;<input type="text" id="tb1" disabled="disabled" />
</body>
</html>

Der auskommentierte Teil dient zusaetzlich dem Leeren der jeweiligen TextBox.
 

Ähnliche Themen

Variablen in Session speichern

dovecot und postfix Konfiguration Problem

datei bei upload umbenennen

Automatische Weiterleitung und php

Apache2 php5

Zurück
Oben