[js] input tags dynamisch benaderen

Pagina: 1
Acties:

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Ik heb de volgende situatie:

Een inschrijfprocedure van 4 pagina's waarbij de informatie van iedere pagina die is ingevuld, maar niet de huidige, in hidden input tags staat. Op pagina 4 wil ik de mogelijkheid geven een printje te maken en wil ik dus de informatie uit die hidden input tags inlezen.
Opzich lukt dat aardig, alleen is er een stukje informatie die ik dynamisch zal moeten benaderen. Het aantal mensen + bijbehorende informatie is namelijk variabel. het ziet er ongeveer zo uit:

HTML:
1
2
3
4
<input type="hidden" name="deelnemers[1][naam]" value="pietje">
<input type="hidden" name="deelnemers[1][leeftijd]" value="20">
<input type="hidden" name="deelnemers[2][naam]" value="peter">
<input type="hidden" name="deelnemers[2][leeftijd]" value="30">

maar dit kunnen dus net zo goed 4 deelnemers zijn ipv 2

Ik kom er alleen niet uit hoe ik dit op een dynamische manier kan benaderen in javascript. kan iemand me een zetje in de goede richting geven?
ik heb de search al geprobeerd, maar kom alleen op topics uit die over checkboxen en dropdownmenuutjes gaan en dat kan (krijg) ik hier niet op toegepast

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 08:12

pistole

Frutter

Ik zou er een goeie JavaScript / DOM guide bij zoeken, en vervolgens iets met de document.getElementsByName functie enzo gaan doen?

Ik frut, dus ik epibreer


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
thnx, dat zetje had ik nodig :) die getElementsByname biedt namelijk wel een oplossing, die kende ik nog niet.

voor het archief:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 function do_stuff()   /* kon ff niets leuks verzinnen */
 {
    list = document.getElementsByTagName("input");
    for (var i = 0; i < list.length; i++)
    {
        var name = list[i].name;
        if (name.substring(0,10) == "deelnemers")
        {
             // creating an output that's suitable for splitting
            name = name.replace('][', '|');
            name = name.replace('[', '|');
            name = name.replace(']', '');

             // the splitting
            input_arr = name.split('|');

            var index = input_arr[1];
            var info = input_arr[2];
            var value = list[i].value;
        }
    }
 }

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:20

crisp

Devver

Pixelated

ik zou het eerder andersom doen, en geen nummering geven:

HTML:
1
2
3
4
<input type="hidden" name="deelnemers[naam][]" value="jan" />
<input type="hidden" name="deelnemers[leeftijd][]" value="20" />
<input type="hidden" name="deelnemers[naam][]" value="piet" />
<input type="hidden" name="deelnemers[leeftijd][]" value="44" />


In de meest serverside-talen krijg je dan een array deelnemers['naam'] en deelnemers['leeftijd'] en in JS is er dan ook veel eenvoudiger doorheen te lopen met getElementsByName of zelfs in de good old-fashioned way:

JavaScript:
1
2
3
4
var el = document.forms[0].elements['deelnemers[naam][]'], j = el.length;
for (var i = 0; i < j; i++) {
  alert(el[i].value);
}

Intentionally left blank


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
crisp schreef op 08 februari 2004 @ 00:25:
ik zou het eerder andersom doen, en geen nummering geven:
Dat gaat niet. Er zit nog een php-script 'achter' dat er anders niet lekker meer mee overweg kan.
En opzich heb ik met die functie die ik nu geschreven heb nu een mooie en handige oplossing. Dat zie ik meer zitten dan in php heel omslachtig te gaan doen

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:20

crisp

Devver

Pixelated

marty schreef op 08 februari 2004 @ 00:59:
[...]


Dat gaat niet. Er zit nog een php-script 'achter' dat er anders niet lekker meer mee overweg kan.
En opzich heb ik met die functie die ik nu geschreven heb nu een mooie en handige oplossing. Dat zie ik meer zitten dan in php heel omslachtig te gaan doen
Dat klinkt mij als een design-fout, want de oplossing die je nu gebruikt vind ik eerder omslachtig dan mooi en handig ;)

Intentionally left blank


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
crisp schreef op 08 februari 2004 @ 01:04:
[...]

Dat klinkt mij als een design-fout, want de oplossing die je nu gebruikt vind ik eerder omslachtig dan mooi en handig ;)
nou, mooi en handig is inderdaad een beetje overdreven. maar ik ben altijd blij als ik iets nieuws in javascript kan. die taal ligt me namelijk gewoon niet. vandaar dat ik het mooi vond :) hehe

maar design-fout? dat moet je me toch eens uitleggen. Als je formulieren maakt die je vervolgens met php gaat verwerken dan is dit een vrij normale manier van werken hoor. Je creëert je array dan het liefst per deelnemer. Vooral ook omdat ik er nog allerlei controle functies aan heb hangen. Het is dan heel onhandig om met allerlei losse namen, leeftijden, etc. te zitten. (dat kan óók, maar is gewoon een stuk minder practisch). En tja....het bleek achteraf dat er nog wat geprint moest worden. Dat wist ik van te voren ook niet.
Pagina: 1