webForumDet fria alternativet

Variabel filändelse

12 svar · 450 visningar · startad av devotion

devotionMedlem sedan jan. 20012 711 inlägg
#1

:e
Hej!

Jag har följande kod som kontrollerar om filändelsen är txt.

<script type="text/javascript">
function checkFileExt(fname, ext){
  if (!new RegExp("\." + ext + "$", "i").test(fname)){
    alert("Du har försökt skicka en fil med fel format!");
    return false;
  }
  return true;
}

Hur kan jag gör kontrollen dynamisk.

Filandelsen är beroende av leverantör och kan hämtas i databas

ex.
Leverantör 1: txt
Leverantör 2: asc
Leverantör 3 dat

Mvh
Henrik

@ndersMedlem sedan juni 200026 914 inlägg
#2

Jag tycker den funktionen ser ut att göra det du vill.
Skickar du inte med filändelsen som parameter två när du kallar på funktionen?

Mvh

devotionMedlem sedan jan. 20012 711 inlägg
#3

Jo, det gör jag ju kanske...

Men om jag i nuläget försöker skicka upp test.doc... så stoppas den..

Jag kanske inte fattar riktigt... ;)

//henrik

@ndersMedlem sedan juni 200026 914 inlägg
#4

.doc är ju varken txt, dat eller asc, så den ska ju stoppas.
Hur kallar du på funktionen då?

devotionMedlem sedan jan. 20012 711 inlägg
#5
onsubmit="return (validatelist(this) && checkFileExt(this.elements['file1'].value
devotionMedlem sedan jan. 20012 711 inlägg
#6

Gahhh!!!

Missade att kopiera slutet...

onsubmit="return (validatelist(this) && checkFileExt(this.elements['file1'].value, 'txt'));
@ndersMedlem sedan juni 200026 914 inlägg
#7

Istället för 'txt' kan du ju skicka in något annat?

devotionMedlem sedan jan. 20012 711 inlägg
#8

Typ...

onsubmit="return (validatelist(this) && checkFileExt(this.elements['file1'].value, '<% =sExt %>'));

?

@ndersMedlem sedan juni 200026 914 inlägg
#9

till exempel. :)

devotionMedlem sedan jan. 20012 711 inlägg
#10

finns det fler/bättre alternativ?

Att ändra i javascriptet är onödigt krångligt eller?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#11

Utnyttja kraften i regex! En regex kan matcha flera saker, tex så matchar uttrycket \.(doc|txt|dat)$ alla tre ändelserna. Följdaktligen kan du anv'nda koden nedan och skicka med en lista med filändelser separerade med | (S k pipe-tecken)

<script type="text/javascript">
function checkFileExt(fname, ext){
  if (!new RegExp("\.(" + ext + ")$", "i").test(fname)){
    alert("Du har försökt skicka en fil med fel format!");
    return false;
  }
  return true;
}
...
onsubmit="return (validatelist(this) && checkFileExt(this.elements['file1'].value, 'txt|doc|dat'));
devotionMedlem sedan jan. 20012 711 inlägg
#12

Men i det här fallet så är det ju beroende på vilken leverantör av fil man valt. Dvs inte en lista på olika filformat.

Leverantör 1 txt
Leverantör 2 asc
Leverantör 3 dat

Mvh
Henrik

devotionMedlem sedan jan. 20012 711 inlägg
#13

Problemet löst... :D

Mvh
Henrik

Genererad på 509 ms · cache AV · v20260730165559-full.f96bc7eb