Array für POST mittels Javascript füllen

Maximus

Erfahrenes Mitglied
Hallo,

folgendes Problem:

Ich versuche diesem Input
PHP:
<input type="hidden" value="" id="aufgabe[]" name="aufgabe[]" />
mittels dieser Javascript-Funktion einen Value zu übergeben:


Code:
<script>
function changeInput()
{    
    document.getElementById("aufgabe[0]").value = "Ein";
    document.getElementById("aufgabe[1]").value = "Test";
}
</script>

Ziel ist es, dass nach dem Postback aufgabe[] einen array mit den Werten erhält.
Oder gibt es da vielleicht eine bessere Herangehensweise?

Danke für eure Hilfe!
Gruß
Maxi
 
Hallo Maxi,

ich denke nicht das du so auf die ID zugreifen kannst. Wenn du dafür aber den Namen nimmst, klappt es.

Javascript:
function changeInput()
{
    document.getElementsByName("aufgabe")[0].value = "Ein";
    document.getElementsByName("aufgabe")[1].value = "Test";
}

Wobei ich noch nicht so ganz verstanden habe was du vor hast!
 
Das führt leider zu dieser Fehlermeldung:
Uncaught TypeError: Cannot set property 'value' of undefined

Ich erkläre mal kurz was ich machen möchte, vielleicht hast du dann einen besseren Lösungsansatz und habe zur Verdeutlichung einen Screenshot in Anlage angehängt. Ich baue eine Übersicht über Events auf wo der User mittels Tastendruck die Möglichkeit hat, sich an- oder abzumelden.
Die Tasten sind vom Typ INPUT-BUTTON und lösen ein eine JS-Funktion aus.
Durch einen Klick auf den Submit-Button werden die daten per POST übergeben und in die Datenbank geschrieben.

Damit ich auch weiß, ob sich ein User für ein Event an- oder abgemeldet hat soll die JS-Funktion das entsprechend im Hiddenfield hinterlegen.
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    37,9 KB · Aufrufe: 12
Zuletzt bearbeitet:
Ok, dann war das oben natürlich quatsch. Du kannst es rein mit Hilfe von CSS, Checkboxen und Labels lösen.

HTML:
<style type="text/css">
label {
	width: 100px;
	height: 25px;
	border: 1px solid #808080;
	background-color: #C0C0C0;
}
input[type=checkbox]:checked + label {
	background-color: red;
}
input[type=checkbox] {
	display: none;
}
</style>
<input type="checkbox" name="event" id="event1" value="Event 1" /><label for="event1">Anmelden</label>
<input type="checkbox" name="event" id="event2" value="Event 2" /><label for="event2">Anmelden</label>
<input type="checkbox" name="event" id="event3" value="Event 3" /><label for="event3">Anmelden</label>
<input type="checkbox" name="event" id="event4" value="Event 4" /><label for="event4">Anmelden</label>
<input type="checkbox" name="event" id="event5" value="Event 5" /><label for="event5">Anmelden</label>

Die Checkboxen werden durch das Anklicken der Labels markiert und somit beim Absenden übertragen.
 
Danke für diesen Ansatz. Ich versuche aber gerade es mittels eines Buttons und OHNE Checkboxen zu lösen....
Hast du dazu noch einen Ansatz?
 
Auch gleich für mehrere. Zuerst hatte ich die einzelnen Buttons als Submits, aber das möchte ich auch nicht. Ich möchte, dass man sich zunächst pro Event an- oder abmeldet und dann per Submit alles als Array übergibt.
 
Wie soll aber unterschieden werden ob ich einen Button angeklickt habe um dieses Event auszuwählen oder ob ich das Event abgewählt habe?

Was soll einer der Buttons für einen Wert an die JS-Funktion übergeben, die ValueEigenschaft kannst du ja nicht nehmen.

Wenn du es der Optik wegen unbedinngt mit Buttons lösen willst, dann würde ich aber unsichtbar im Hintergrund trotzdem Checkboxen zum Übermitteln der Daten verwenden.

Das obige Beispiel mit den Labels hätte halt den Vorteil das es ohne Javascript funktioniert!
 
Wie soll aber unterschieden werden ob ich einen Button angeklickt habe um dieses Event auszuwählen oder ob ich das Event abgewählt habe?
HTML:
<input type="button" value="Abmelden" onClick="changeButton(\''. $reservation->eventId. '\')" class="btn btn btn-danger" id="'. $reservation->eventId.'" name="'. $reservation->eventId.'" />';

Code:
<script>
	function changeButton(btn){
		wert = document.getElementById(btn).value;
		if (wert == "Abmelden") {
			wert = "Anmelden";
			document.getElementById(btn).value = wert;
			document.getElementById(btn).className = "btn btn-success"
		} else {
			wert = "Abmelden";
			document.getElementById(btn).value = wert;
			document.getElementById(btn).className = "btn btn btn-danger"		
		}
	}
</script>

Was soll einer der Buttons für einen Wert an die JS-Funktion übergeben, die ValueEigenschaft kannst du ja nicht nehmen.
Das ist im Prinzip egal - von mir aus kann das 0 oder 1 sein.
 
Na gut, dann hier halt eine Lösung nur mit Buttons.

Der dafür benötigte Code ist mehr, es funktioniert nur wenn Javascript aktiv ist und es kann auch nicht mehr wie die CSS Lösung.

Mal sehen ob dir das gefällt!!?
 

Neue Beiträge

Zurück