[GastForen Programmierung/Entwicklung JavaScript Werte von checkbox rein und wieder raus

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Werte von checkbox rein und wieder raus

Jakopil
Beiträge gesamt: 5

20. Jul 2004, 12:16
Beitrag # 1 von 11
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich will werte, die man via checkbox anklickt, in eine kommaseparierte Variable speichern, bevor das Formular gesendet wird. Das Hinzufuegen wäre kein Problem, doch das Entfernen bereitet mir grosse Schwierigkeiten. Hat jemand einen Tip. Wäre sehr dankbar.

Gruss
O
X

Werte von checkbox rein und wieder raus

Jakopil
Beiträge gesamt: 5

21. Jul 2004, 10:54
Beitrag # 2 von 11
Beitrag ID: #98482
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
hier eine selbsgebastelte Lösung, die spezifische Anforderung erfüllt:

event, wenn auf checkbox geklickt wird (formular index referenz geht hier nicht, weil es viele verschiedene formulare sind): onClick="CheckMich(einWert)"

funktion,um argumentwerte an formale parameter der Funktion zu übergeben:

list = '';
kontrolle = 0;
var myArray = new Array();

function checkMich(PreisZuSammel) {
stringArray = list.split(",");
var myLeng = stringArray .length;
for(i=0;i<myLeng;i++) {
//gefunden einen, also nicht anhaengen unten
if (PreisZuSammel == stringArray) {
myArray .splice(i,1);
kontrolle = 1;
break;
}
}

if (kontrolle == 0) {
//alert("kontrolle gleich 0, also hinufuegen.");
myArray.splice(1,0,PreisZuSammel);
}
kontrolle = 0;
list = myArray.join(',');
//alert(myArray.length);
}

Gruss
O


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

Markus Walker
Beiträge gesamt: 494

21. Jul 2004, 12:47
Beitrag # 3 von 11
Beitrag ID: #98516
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jakopil

Wieso willst Du dieses Array (ich nehme mal an, dass dies seinen guten Grund hat, den ich allerdings nicht erkennen kann) fortlaufen nachführen? Es wäre doch einfacher dieses Array beim Absenden des Formulars abzufüllen und mit zu schicken.

HTH


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

Jakopil
Beiträge gesamt: 5

22. Jul 2004, 07:36
Beitrag # 4 von 11
Beitrag ID: #98715
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Markus

Das Dokument sieht eben so aus:
<form><checkbox></form>
<form><checkbox></form>
...
<form><sendeDaten dieser Form und die Checkboxen der Oberen n-Mal Forms></form>

Das Problem ist also, dass die Checkboxen sich in vielen verschiedenen Formularen befinden und nicht im formular, von wo aus gesubmitted wird. Deshalb schreibe ich die Werte mit der Funktion zuerst in eine Variable und sende sie dann in der Submit-Funktion einfach als URL-Parameter mit, womit ich sie dann auch habe und im Actionscript weiterverarbeiten kann..

Gruss


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

Markus Walker
Beiträge gesamt: 494

22. Jul 2004, 08:32
Beitrag # 5 von 11
Beitrag ID: #98721
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jakopil

Schön, aber das erklärt immer noch nicht, warum die Formulardaten nicht beim Abschicken gesammelt werden. Die Formular-Elemente (z.B. Checkboxen) sind Objekte innerhalb des forms Objekt, welches ein Objekt innerhalb des document Objekts, welches seinerseits ein Objekt innerhalb des window Objekts ist. Das heisst man kann jedes Formular-Element in jedem Formular abfragen. Die folgende Zeile gibt true oder false zurück, je nachdem ob die entsprechende Checkbox angekreuzt ist oder nicht. Dabei handelt es sich um das sechste Element im dritten Formular im aktuellen Dokument im aktuellen Fenster.

window.document.forms[2].elements[5].checked

Wenn die Objekte mit Namen versehen sind, kann man auch über diese zugreifen. Siehe hierzu auch die Ausführungen unter:
http://de.selfhtml.org/...objekte/elements.htm

In diesem Zusammenhang ist noch auf den with Operator hinzuweisen, welcher das Leben mit tief verschachtelten Objekten erleichtert.
http://de.selfhtml.org/...che/objekte.htm#with

HTH


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

Jakopil
Beiträge gesamt: 5

22. Jul 2004, 09:29
Beitrag # 6 von 11
Beitrag ID: #98727
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hal Markus,

>>"[..warum Formulardaten nicht beim Abschicken gesammelt werden]"...

Weil beim senden eines Formulars Du nur Zugriff auf genau die Felder hast, auf die sich das Form-Objekt bezieht, bzw. du mit submit sendest. Hast Du also mehrere Formulare auf der Seite und möchtest beim Absenden auf die Elemente eines anderen Form-Objekts zugreifen, dann bleibt nichts anderes übrig, als besagter Umweg, weil bei der Methode des Form-Objekts, z.B. document.forms[3].submit() du nur auf diese Elemente und Eigenschaften(werte) Zugriff hast und diese gesendet werden, nicht aber beim Senden der Daten vom x-Ten Formular document.forms[n] aus, genau das will ich aber.

Die Methoden und Eigenschaften des Form-Objekts kenn' ich, danke trotzdem für den Reminder wie die Objekt-Hirarchie von JavaScript aufgebaut ist...


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

oesi50
  
Beiträge gesamt: 2315

22. Jul 2004, 09:41
Beitrag # 7 von 11
Beitrag ID: #98728
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Jakopil,

> Weil beim senden eines Formulars Du nur Zugriff auf genau die Felder hast,
> auf die sich das Form-Objekt bezieht, bzw. du mit submit sendest.

Das stimmt so nicht. Probiere mal das hier aus und beobachte Deine Adresszeile im Browser.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript" type="text/javascript"><!--
function schwupps(){
document.f2.fred.value = document.f1.fred.value;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM name="f1" METHOD=GET ACTION="">
<input name="fred">
</FORM>
<FORM name="f2" METHOD=GET ACTION="" onsubmit="schwupps()">
<input name="uhu">
<input type=hidden name="fred">
<INPUT TYPE="submit">
</FORM>
</BODY>
</HTML>

Richtig ist, dass der Browser nur die Daten des Formulars abschickt, in dem der Submitt Button gedrückt wurde. Zugriff mit Javascript hat man natürlich auf alle Formulare. Wie Du an meinem Beispiel siehst, werden die Daten des ersten Formulars direkt beim Abschicken übernommen. Wenn Du also die Daten von n Formularen in der Funktion 'schwupps' aufbereitest und in div. Hidden Felder einträgst, kannst Du den Inhalt ALLER Formulare übertragen.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#98244]
(Dieser Beitrag wurde von oesi50 am 22. Jul 2004, 09:42 geändert)

Werte von checkbox rein und wieder raus

Jakopil
Beiträge gesamt: 5

22. Jul 2004, 10:05
Beitrag # 8 von 11
Beitrag ID: #98730
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja klar, Du hast Recht, dass alle Elemente erreichbar sind, doch das ändert nicht viel daran, dass man Anzahl und/oder Namen der Formulare vorab kennen muss und mit irgendeiner Subroutine deren Zustände (bei mir checked oder nicht sowie den entsprechenden Wert) herausbekommen muss.
Das war mir dann doch zu umständlich und ineffizient, weshalb ich mich für den kürzeren Weg mit den Variablen im globalen Scope entschieden habe...

Trotzdem bereichernd und mit gruss
Oscar


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

oesi50
  
Beiträge gesamt: 2315

22. Jul 2004, 10:16
Beitrag # 9 von 11
Beitrag ID: #98732
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Leider kenne ich deine konkrete Aufgabenstellung nicht. Wenn Du mal einen Link dazu hättest, könnte ich Dir das noch etwas genauer zeigen.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

Markus Walker
Beiträge gesamt: 494

22. Jul 2004, 16:59
Beitrag # 10 von 11
Beitrag ID: #98881
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jakopil oder Oscar

>beim senden eines Formulars Du nur Zugriff auf genau die Felder hast, auf die sich das Form-Objekt bezieht

Da muss ich doch wiedersprechen. Richtig ist, das submit() nur die Felder des betreffenden Formular weiter reicht. Zugriff auf andere Formulare und deren Felder hat man allemal, wie oben beschrieben. Das ist nicht ganz das selbe. Um noch was vor dem Überreichen der Daten zu tun, gibt es den onsubmit Event:
http://de.selfhtml.org/...handler.htm#onsubmit
Damit lassen sich auch Daten in ein Hidden-Feld abfüllen, wenn es denn sein muss.
Nachfolgend zwei Beispiele, zuerst mit Abfüllung ins Hidden-Feld und dann weiterreichen der Daten in ein E-Mail.

HTH

------Beispiel 1------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<script type="text/javascript" name="collectData"><!--
function collect() {
var aData = new Array();

for (var j = 0; j < document.forms.length; j++) {
for (var i = 0; i < document.forms[j].elements.length; i++) {
if (document.forms[j].elements.checked) aData.push(document.forms[j].elements.value);
}//for elements
}//for forms

if (aData.length < 1) {
window.alert("Keine Auswahl!");
return false;
}
else {
document.collectData.CollectedData.value = aData.toString();
return true;
}
}
//-->
</script>
</head>

<body bgcolor="#ffffff">
<form id="Form1" name="Form1">

<input type="checkbox" name="checkbox1" value="Form1Check1"><input type="checkbox" name="checkbox1" value="Form1Check2"><input type="checkbox" name="checkbox1" value="Form1Check3">
</form>
<form id="Form2" name="Form2">
<input type="checkbox" name="checkbox1" value="Form2Check1"><input type="checkbox" name="checkbox1" value="Form2Check2"><input type="checkbox" name="checkbox1" value="Form2Check3">
</form>
<form id="Form3" name="Form3">
<input type="checkbox" name="checkbox1" value="Form3Check1"><input type="checkbox" name="checkbox1" value="Form3Check2"><input type="checkbox" name="checkbox1" value="Form3Check3">
</form>
<form id="collectData" action="http://www.irgend.wo/URL/file.php" method="post" name="collectData" enctype="Default" onsubmit="return collect()" >

<input type="submit" name=""><input type="hidden" name="CollectedData" value="Hallo">
</form>
</body>

</html>
------/Beispiel 1------
------Beispiel 2------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<script type="text/javascript" name="collectData"><!--
function collect() {
var aData = new Array();

for (var j = 0; j < document.forms.length; j++) {
for (var i = 0; i < document.forms[j].elements.length; i++) {
if (document.forms[j].elements.checked) aData.push(document.forms[j].elements.value);
}//for elements
}//for forms
if (aData.length < 1) aData = "Keine Auswahl!";

void(window.location="mailto:[email protected]?subject=Test%20Daten&amp;body=" + aData.toString());
}
//-->
</script>
</head>

<body bgcolor="#ffffff">
<form id="Form1" name="Form1">

<input type="checkbox" name="checkbox1" value="Form1Check1"><input type="checkbox" name="checkbox1" value="Form1Check2"><input type="checkbox" name="checkbox1" value="Form1Check3">
</form>
<form id="Form2" name="Form2">
<input type="checkbox" name="checkbox1" value="Form2Check1"><input type="checkbox" name="checkbox1" value="Form2Check2"><input type="checkbox" name="checkbox1" value="Form2Check3">
</form>
<form id="Form3" name="Form3">
<input type="checkbox" name="checkbox1" value="Form3Check1"><input type="checkbox" name="checkbox1" value="Form3Check2"><input type="checkbox" name="checkbox1" value="Form3Check3">
</form>
<input onclick="collect()" type="button" name="" value="send">

</body>

</html>
------/Beispiel 2------


als Antwort auf: [#98244]

Werte von checkbox rein und wieder raus

Anonym
Beiträge gesamt: 22827

22. Jul 2004, 17:57
Beitrag # 11 von 11
Beitrag ID: #98913
Bewertung:
(2697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus,

Danke, dieser Ansatz und der Lösungsvorschlag mit den geschachtelten Schleifen mittels forms.length und elements.length um auf die checked eigenschaften des jeweiligen Elements des aktuellen Formulars der aeusseren Schleife zu kommen und dann in ein Array zu pushen, ist mit Sicherheit der richtige und eleganteste Weg zur Problemlösung. Werd' diese durch meine etwas umständlichere Variante ersetzen weil letztere - obwohl funktionierend - nicht Gebrauch macht von den Methoden und Eigenschaften des Form-Objekts, was aber wohl eher hätte nach Rom führen sollen...

Nochmals Dank an alle für die Infos.



als Antwort auf: [#98244]
X

Aktuell

PDF / Print
Wolken_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/