Den gesamten Inhalt eines <select>-Tags absenden
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abschicken
ankommen
array
attribut
auslese
code
dank
datum
element
erstellung
feld
formular
gelegenheit
leichte modifizierung
markieren
option
rechte schieben
schleife
speichern
tag
-
Hi.
Ich habe den HTML-Tag <select> ein wenig zweckentfremdet, um mir ein Element zu basteln, welches von HTML nicht mitgeliefert wird (versteh ich au warum - das braucht man im regelfall net^^). Jedenfalls hab ich das <select>-tag zu einem Element umgewandelt, welches nur noch Daten sammelt (über ein JavaScript) und sie anzeigt. Wird das Formular nun abgeschickt möchte ich nun sämtliche Daten, die im Feld stehen, abschicken, egal, ob der User welche angewählt hat oder nicht.
Da es sich um ein Multichoice-Feld handelt hab ich schon versucht alle vor dem Abschicken per JavaScript zu markieren aber irgendwie hab ich das nicht auf die reihe bekommen^^
Ich bräuchte eine Lösung die sowohl unter IE als auch FireFox funktioniert (hatte schon genug mühe damit das ding au unter IE zum laufen zu bringen xD)
Danke euch schonmal
Dustboy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also genau genommen geht es um die value-werte von den option-tags?
function getData(sourceID) { var htmltxt; selectnode = document.getElementById(sourceID).getElementsByTagName('OPTION'); for(a=0;a<selectnode.length;a++){ alert(selectnode[a].name+' = '+selectnode[a].value) } } </script> <select id="readme" name="xghh"> <option name="xghh" value="dfj">dfj</option> <option name="xghh" value="ghk">ghk</option> <option name="xghh" value="hgk">fdj</option> <option name="xghh" value="dfhj">dfj</option> <option name="xghh" value="fjh">fj</option> </select> <a href="javascript:getData('readme')">selectfel lesen</a>
Soviel zum auslesen aber verstehen tue ich nicht warum Du das machst.
Kannst Du die nicht gleich in hidden-inputs speichern?
Du musst ja verschiedene Namen-attribute haben oder das sonstwie "umwandeln" -
Ja sowas in die richtung such ich, allerdings sollten die Werte per Post übermittelt werden (und idealerweise in nem Array in PHP ankommen...)
Zum Thema warum ich das Brauch: Ich hab mir sowas gebalstelt wo 2 multichoice-felder sind und mann kann die Werte von der linken in die rechte schieben und damit auswählen (ich habe ziemlich viele optionale werte, daher wäre ein einfaches multichoice etwas unhandlich und checkboxen unübersichtlich....) -
Also gut.
Ich habe den Code mal erweitert.
Also entweder übernimmt dein php-code die Daten indem er in einer schleife alle 'data_'+$a ausliest oder du nimmst den Inhalt
von data_kompakt und liest in mit explode() in ein array ein.
Damit man sieht was gesendet wird habe ich das als GET-formular gemacht.
Da die knoten-Erstellung usw DOM-gerecht ist dürfte es eigentlich keine Probleme mit irgendwelchen Browsern geben, solange javascript aktiviert ist.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>selectfeld-formular</title> </head> <body> <script type="text/javascript"> function getData(sourceID) { var arrayTrenner = '-'; //der trenner für php-explode() var target_ID_1 = "hidden_inputs1"; var target_ID_2 = "hidden_inputs2"; selectnode = document.getElementById(sourceID).getElementsByTagName('OPTION'); for(a=0;a<selectnode.length;a++){ //fuer jeden Datensatz 1 input saveInInput('data_'+a,selectnode[a].value,target_ID_1); //Daten zusammen in einem Text mit trenner if (a==0) {var sendArray = selectnode[a].value;} sendArray += arrayTrenner+selectnode[a].value; } //alle daten zusammen senden und in php mit explode(9 in ein array uebernehmen saveInInput('data_kompakt',sendArray,target_ID_2); return true; } function saveInInput(name,value,id) { var inputnode = document.createElement('INPUT') inputnode.type = 'Hidden'; inputnode.name = name; inputnode.value = value; document.getElementById(id).appendChild(inputnode); } </script> <form action="" method="GET" onsubmit="getData('readme')"> <select id="readme" name="xghh"> <option name="xghh" value="dfj">dfj</option> <option name="xghh" value="ghk">ghk</option> <option name="xghh" value="hgk">fdj</option> <option name="xghh" value="dfhj">dfj</option> <option name="xghh" value="fjh">fj</option> </select> <!---<a href="javascript:void getData('readme')">selectfeld 'speichern'</a>----> <div id="hidden_inputs1"></div> <div id="hidden_inputs2"></div> <input type="Submit" value="senden"> </form> </body> </html>
-
Stimmt. Das is au ne ganz gute möglichkeit. Das dürfte so wirklich funktionieren. Nur ne leichte Modifizierung noch, dann ist as gut =)
Kleiner Hinweis für dich was ich Modifiziere (vll weißstes noch nich und könntest deshalb bei der Gelegenheit au noch was dazu lernen =) )
Wenn du alle Elemente gleich benennst und zwar mit einem [] am schluss, dann kommen sie in PHP direkt als Array an.
Kleines Beispiel dazu:
Statt 'data_'+a, schreibste einfach 'data[]'.
Und schon kannst du es in PHP mit $_POST['data'][0] $_POST['data'][1] usw. auslesen
Jedenfalls danke dir =) -
Nein das wusste ich nicht, danke solche infos helfen :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage