webForumDet fria alternativet
Logga in / Bli medlem

Variabel filändelse

JavaScript

12 svar · 450 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Trådstart#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

Medlem sedan juni 200032 967 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

Medlem sedan jan. 20013 582 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

Medlem sedan juni 200032 967 inlägg
#4

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

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

Gahhh!!!

Missade att kopiera slutet...

onsubmit="return (validatelist(this) && checkFileExt(this.elements['file1'].value, 'txt'));
Medlem sedan juni 200032 967 inlägg
#7

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

Medlem sedan jan. 20013 582 inlägg
#8

Typ...

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

?

Medlem sedan juni 200032 967 inlägg
#9

till exempel. :)

Medlem sedan jan. 20013 582 inlägg
#10

finns det fler/bättre alternativ?

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

Medlem sedan aug. 20039 340 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'));
Medlem sedan jan. 20013 582 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

Medlem sedan jan. 20013 582 inlägg
#13

Problemet löst... :D

Mvh
Henrik

261 ms totalt · 4 externa anrop · v20260731065814-full.50d4b5bd
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)