White_Virus Geschrieben 11. April 2003 Geschrieben 11. April 2003 Das ist meine funktion function chk(chki) { alert(chki); var x = "document.formname."+chki+".checked=true"; evel(x); } chki = chk[0] So das problem ist das der befehl evel anscheinend nicht mit den [ ] zurecht kommt. Aber ich weiß sonst nicht wie ich es anstellen soll. Zitieren
loeti Geschrieben 11. April 2003 Geschrieben 11. April 2003 Versuch's mal mit "eval()" statt "evel()". Zitieren
White_Virus Geschrieben 14. April 2003 Autor Geschrieben 14. April 2003 Nein das ist nicht das prob hab mich hier dan vertippt das meinte ich ja Zitieren
loeti Geschrieben 14. April 2003 Geschrieben 14. April 2003 Dann übergib doch als Parameter lediglich den Indox, also hier "0" und definier die Funktion folgendermaßen: function chk(chki) { alert(chki); var x = "document.formname.chk["+chki+"].checked=true"; evel(x); } Vielleicht funktioniert das?! Zitieren
jomama Geschrieben 14. April 2003 Geschrieben 14. April 2003 Original geschrieben von White_Virus Das ist meine funktion function chk(chki) { alert(chki); var x = "document.formname."+chki+".checked=true"; evel(x); } chki = chk[0] So das problem ist das der befehl evel anscheinend nicht mit den [ ] zurecht kommt. Aber ich weiß sonst nicht wie ich es anstellen soll. erstmal so: chki = "chk[0]"; Warum du hier eval brauchst, versteh ich grad mal nicht. Aber wenn du das x weiterverwenden willst, musst du es mit return zurückgeben, weil die Variable in der Funktion nur solange existiert, wie die Funktion ausgeführt wird. Nachtrag: Was du mit eval ausführen wollst, ist doch JavaScript Code, oder? Eval führt das aber als PHP-Code aus, das kann nicht funzen. Zitieren
White_Virus Geschrieben 14. April 2003 Autor Geschrieben 14. April 2003 Das hier geht nicht var x = "document.formname.chk["+chki+"].checked=true"; Da das eval ja probleme mit den [] hat das hab ich nämlich auch schon gedacht. Und nein die funktion soll auch abgeschlossen sein ich brauche kein return dabei das ist alles schon so in Ordnung da ich ja erst nur die häkchen setze und dann wenn das formular abgeschickt wird wird kontrolliert welche checkbox true ist und dann werden die dazugehörigen befehle ausgeführt und um zu schaun welche checkbox true ist muss ich ein array übergeben. Nur da der befehl eval probleme mit [] hat geht der rest auch nicht. Zitieren
loeti Geschrieben 14. April 2003 Geschrieben 14. April 2003 Ich kann mir nicht vorstellen, dass der "eval" Befehl diese Probleme macht. Was passiert denn, wenn du statt des "eval" einfach hart kodiert auf den Index 0 zugreifst, also:function chk(chki) { document.formname.chk[0].checked=true; } Funktioniert das denn? Wie macht sich der Fehler eigentlich bemerkbar? Bekommst du einen Javascript Fehler oder passiert einfach nichts? Zitieren
jomama Geschrieben 14. April 2003 Geschrieben 14. April 2003 Wie gesagt, das kann nicht gehen, weil eval keinen JavaScript-Code ausführt, sondern PHP-Code. Wenn du das so benutzen willst, musst du den Code mit echo in ein JavaScript reinschreiben oder dir was anderes einfallen lassen. Zitieren
loeti Geschrieben 14. April 2003 Geschrieben 14. April 2003 Original geschrieben von jomama Wie gesagt, das kann nicht gehen, weil eval keinen JavaScript-Code ausführt, sondern PHP-Code. Wenn du das so benutzen willst, musst du den Code mit echo in ein JavaScript reinschreiben oder dir was anderes einfallen lassen. Öhm, ich glaube, du missverstehst hier etwas. Es geht um reines JavaScript, mit PHP hat das nichts zu tun. Die "eval" Funktion gibt's auch in Javascript. (Ich entnehme deinem Posting, dass es sie auch in PHP gibt. PHP kenne ich leider nicht.) Zitieren
jomama Geschrieben 14. April 2003 Geschrieben 14. April 2003 Sorry, das war jetzt Blödsinn, ich war jetzt auf PHP, derweil willst du doch nur JavaScripten. Zitieren
White_Virus Geschrieben 14. April 2003 Autor Geschrieben 14. April 2003 Mir ist es egal ob es php oder Js ist hauptsache es geht von mir aus kann mir auch einer eine idee in php geben aber bei JS bin ich halt schon so weit. Also ohne den eval hmmm da geht es auch nicht vielleicht hät ich da früher testen sollen document.formname.chk.0 ist kein Objetct ist die fehlermeldung Naja logisch ist es ja aber warum macht er aus meinem array sowas??? Zitieren
loeti Geschrieben 14. April 2003 Geschrieben 14. April 2003 Kannst du mal posten, wie du das Element im HTML Code definiert hast? Zitieren
White_Virus Geschrieben 14. April 2003 Autor Geschrieben 14. April 2003 <input type="checkbox" name="chk['.$i.']"> oder was meinst du??? Zitieren
jomama Geschrieben 15. April 2003 Geschrieben 15. April 2003 Schreib mal name="chk[0]", also manuell durchnummerieren. Zitieren
White_Virus Geschrieben 15. April 2003 Autor Geschrieben 15. April 2003 Ne geht nicht gleicher fehler. Zitieren
loeti Geschrieben 15. April 2003 Geschrieben 15. April 2003 Grmpf! Ich dachte eigentlich, dass ich gestern die Message noch abgesendet habe, aber irgendwie fehlt sie im Thread. Also hier nochmal: Schau doch mal in den folgenden Thread, vielleicht hilft der dir weiter: Checkboxen dynamisch Zitieren
White_Virus Geschrieben 15. April 2003 Autor Geschrieben 15. April 2003 Das hab ich gesehen darum bin ich ja auch auf die idee gekommen Aber nun will ich schaun welche checkbox selectiert ist dafür brauch ich nen andern befehl und der brauch dafür arrays und darum muss ich die in ein array wandeln und das klappt ja nicht Zitieren
loeti Geschrieben 15. April 2003 Geschrieben 15. April 2003 Hmmm... Jetzt nochmal im Detail: Was möchtest du genau? Ich versteh das so: Du hast ein Formular, in dem viele verschiedene Eingabefelder existieren, u.a. auch mehrere Checkboxen. Du möchtest beim Klick auf einen Button oder einen Link prüfen, welche dieser Checkboxen angeklickt sind. Ist das bisher richtig so? Dann folgende Fragen: - Kennst du hierbei die Namen der Checkboxen? - Weißt du wieviele es sind? Zitieren
White_Virus Geschrieben 15. April 2003 Autor Geschrieben 15. April 2003 So es ist so ich habe ein formular in diesem forumlar gibt es eine reihe mit einer anzahl von eingabefeldern. Zu jeder reihe gehört eine checkbox. Die eingabefelder werden mit daten aus einer datenbank schon vor gefertigt. Und ich möchte das die checkbox selectiert wird wenn jemand was aus den eingabefeldern ändert. Dann sollen nur die geänderten daten wieder in die datenbank zurückgeschrieben werden. Dabei wird auf die checkbox geachtet. Also werden nur die daten wieder zurückgeschrieben bei denen die checkbox selectiert ist. er grund dafür das ich das so mache ist, der server im hintergrund ist nicht der schnellste darum muss ich so wenig wie möglich abfragen an die datenbank stellen. Zitieren
White_Virus Geschrieben 15. April 2003 Autor Geschrieben 15. April 2003 Ach ja den namen kenn ich soweit das er heißt chk und dann kommt die nummer an welcher stelle ersteht. Die anzahl der checkboxen kann ich rausbekommen indem ich mir den counter anschau der auch für die namensvergabe zuständig ist. Zitieren
loeti Geschrieben 15. April 2003 Geschrieben 15. April 2003 Möchtest du denn wirklich Checkboxen dafür verwenden? So kann der Anwender sie ja von sich aus anklicken und damit deine Überprüfungs-Logik völlig zerschießen. Du kannst dafür doch ein ein verstecktes Feld nehmen und dessen Wert nachher prüfen. Aber wenn du's mit Checkboxen machen möchtest, sollte es folgendermaßen funktionieren. ich habe mal eine Testseite erstellt, mit der das Szenario abgebildet wird: <html> <head> <title>Testformular</title> <script type="text/javascript"> <!-- function chk (index) { eval ("document.testform.chk" + index + ".checked=true;"); } // --> </script> </head> <body> <form name="testform" action=""> <table> <tr> <td>Checkbox 1:</td> <td><input type="checkbox" name="chk1"></td> </tr> <tr> <td>Checkbox 2:</td> <td><input type="checkbox" name="chk2"></td> </tr> <tr> <td>Checkbox 3:</td> <td><input type="checkbox" name="chk3"></td> </tr> <tr> <td colspan="2"><hr></td> </tr> <tr> <th colspan="2">Reihe 1</th> </tr> <tr> <td>Input 1.1:</td> <td><input type="text" name="input_1_1" onchange="chk(1)"></td> </tr> <tr> <td>Input 1.2:</td> <td><input type="text" name="input_1_2" onchange="chk(1)"></td> </tr> <tr> <td>Input 1.3:</td> <td><input type="text" name="input_1_3" onchange="chk(1)"></td> </tr> <tr> <th colspan="2">Reihe 2</th> </tr> <tr> <td>Input 2.1:</td> <td><input type="text" name="input_2_1" onchange="chk(2)"></td> </tr> <tr> <td>Input 2.2:</td> <td><input type="text" name="input_2_2" onchange="chk(2)"></td> </tr> <tr> <td>Input 2.3:</td> <td><input type="text" name="input_2_3" onchange="chk(2)"></td> </tr> <tr> <th colspan="2">Reihe 3</th> </tr> <tr> <td>Input 3.1:</td> <td><input type="text" name="input_3_1" onchange="chk(3)"></td> </tr> <tr> <td>Input 3.2:</td> <td><input type="text" name="input_3_2" onchange="chk(3)"></td> </tr> <tr> <td>Input 3.3:</td> <td><input type="text" name="input_3_3" onchange="chk(3)"></td> </tr> </form> </body> </html> Zitieren
White_Virus Geschrieben 15. April 2003 Autor Geschrieben 15. April 2003 Also ich hät das mit checkboxen gemacht denn wenn man das doch nicht ändern möcht kann die ja wieder deselectieren. Ich werde mir dein beispiel etwas später mal anschaun Thx Zitieren
White_Virus Geschrieben 15. April 2003 Autor Geschrieben 15. April 2003 So hatte doch kurz zeit und habs mir angeschaut. Ja so geht es auch aber du überprüfst j anicht ob die gesetzt sind oder nicht. Dafür brauchst du einen andern befehl und der arbeitet mit arrays. darum muss die checkbox nen array sein. Zitieren
loeti Geschrieben 15. April 2003 Geschrieben 15. April 2003 Achso, ja, wie soll das denn genau funktionieren? Was soll den passieren, wenn eine checkbox ausgewählt ist? Du möchtest dann ja was in eine DB schreiben, also wird hier über die action doch dann wohl eine php Seite aufgerufen oder? Von welchem Befehl, der Arrays benötigt, redest du eigentlich immer? Zitieren
jomama Geschrieben 15. April 2003 Geschrieben 15. April 2003 Egal wie langsam die Kiste ist, die Paar Parameter sollten dem Server nix ausmachen. Am einfachsten wär, du übergibst alle und prüfst dann erst ab, ob sie gesetzt sind. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.