[js] meerdere bestanden koppelen aan 1 form

Pagina: 1
Acties:

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 15-05 12:53
ik ben bezig met een protocol-cms, waar het mogelijk moet zijn om meerdere bijlagen te kunnen koppelen aan een formulier op de volgende manier.

Als je een nieuw protocol invoert, is er een knop "bijlage", welke een klein venster opent, waar je middels een <input type=file> een bestand kunt selecteren.
Als je deze dan "submit" wordt deze met php geupload naar een tmp-directory waar hij in de wacht staat. Met JS wordt de naam van dit bestand op de volgende manier in het hoofd-formulier (van het procotol) gezet :

code:
1
2
3
4
5
6
if($b==1)
{
echo "<center><font color=red>toegevoegd</font></center>";
echo "<script language='Javascript'>opener.document.forms['form2'].elements['files'].value=opener.document.forms['form2'].elements['files'].value+'$bijlage'+'|';</script>";
echo "<script language='Javascript'>opener.document.forms['form2'].elements['omschrijving'].value=opener.document.forms['form2'].elements['omschrijving'].value+'$omschr'+'|';</script>";
}


(dit is PHP, maar de vraag is meer JS - gerelateerd, hoop dat het goed is dat ik hem toch hier stel)

als ik dan een bestand upload, zet ik op deze manier de naam van het bestand in een hidden field in mijn opener-pagina. de string ziet er dan als volgt uit :

bestandsnaam.ext|bestandsnaam2.ext|

de "|" heb ik erin gezet zodat ik bestandsnamen later kan scheiden.

nu heb ik ook een delete-functie in mijn popup-scherm.
Deze zal eerst met PHP het bestand verwijderen door gebruik te maken van de ARRAY-key (alle bestanden worden in een array geplaatst)
Nu wil ik dezelfde ARRAY-key gaan gebruiken om met JS de bestandsnaam uit de string te halen.
Dit dacht ik te doen door de string bestandsnaam.ext|bestandsnaam2.ext| te ontleden , deze in een JS array te zetten, dan de ARRAY-positie die gelijk is aan de verkregen key te legen en dan de string weer opnieuw op te bouwen.
hieronder het javascriptje om een bestand uit de string te verwijderen.
hierbij is "object" de key van de array.

code:
1
2
3
4
5
6
7
8
9
10
function DI(object)
{
var string1 = opener.document.forms['form2'].elements['files'].value;
a1 = string1.split("|");  // zet alle bestanden in de array a1
for (i=0; i<a1.length; i++)
   { 
          // hier gaat al iets mis...na de laatste "|" wordt er nog een arraypositie 
          //gevuld.. hoe vang ik dit af ?
   }
}


hoe kan ik in deze for lus nou de array-positie legen die gelijk is aan het object en hier dan weer een string van maken ?

[ Voor 9% gewijzigd door whitehouse op 21-04-2004 11:32 ]

| www.everythingisspiritual.com | www.mosaic.org |


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

i <= a1.length?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Nee

i < a1.length - 1
:)

Daarnaast zou je de s(p)lice kunnen gebruiken om je array te nuken :P
http://academ.hvcc.edu/~k...+methods&parent=js+arrays

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

BtM909 schreef op 21 april 2004 @ 11:41:
[...]

Nee

i < a1.length - 1
:)
Hmm, oke :)

En inderdaad, gewoon splice gebruiken zoals ^^^ zegt. Daarna de string weer opniew opbouwen.

Maar waarom hou je niet gewoon die array bij met js, dan hoef je dat veld niet iedere keer bij te werken. En op het moment van submitten zet je de array in een hidden field.

[ Voor 3% gewijzigd door André op 21-04-2004 11:44 ]


  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 15-05 12:53
hoe kan ik een array-row op basis van een key legen ??

met php lukt dit wel : unset($_SESSION['files'][$_GET['id']]);

het lukt me ook wel de key ($_GET['id']) door te pasen naar de JS , maar hoe unset ik dan in JS de array-waarde ?

| www.everythingisspiritual.com | www.mosaic.org |


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

whitehouse schreef op 21 april 2004 @ 11:48:
hoe kan ik een array-row op basis van een key legen ??

met php lukt dit wel : unset($_SESSION['files'][$_GET['id']]);

het lukt me ook wel de key ($_GET['id']) door te pasen naar de JS , maar hoe unset ik dan in JS de array-waarde ?
splice

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 15-05 12:53
en hoe bouw ik van de string naam1.ext|naam2.ext| weer een array op :
a[0]=naam1.ext
a[1]=naam2.ext

zonder a[2]='' te krijgen ? (door de "|")

| www.everythingisspiritual.com | www.mosaic.org |


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Makkelijker is natuurlijk van te voren te zorgen dat die laatste | er al niet staat.

Anders kun je hem ook eenvoudig achteraf verwijderen met de ingebouwde Array-methods van Javascript. Meer hierover:

http://www.w3schools.com/js/js_arrays.asp

[edit]
slecht voorbeeld.

Hier een betere opsomming (maar even Googlen levert dit jou vast ook wel op..)

http://www.mauvecloud.net/jscore/jsarraymethodtest.html

[ Voor 26% gewijzigd door Bosmonster op 21-04-2004 12:41 ]

Pagina: 1