Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] formularz + załączanie pliku do wysłania
Forum PHP.pl > Forum > Przedszkole
mpps
Witam,
nie mogę sobie poradzić ze skryptem JS.
Jego zadaniem jest umożliwianie załączania do formularza plików tylko z określonym rozszerzeniem.
Problem polega na tym, że skrypt w IE działa, natomiast w Operze i Firefoksie nie...
Sprawdzanie odbywa się przy kliknięciu buttona type="submit".

Kod
extArray = new Array(".doc", ".pdf"); // TABLICA Z ROZSZERZENIAMI PLIKOW KTORE MAJA BYC AKCEPTOWANE DO WYSLANIA
allowSubmit = false;
if(!file) return;
while(file.indexOf("\\") != -1){
    file = file.slice(file.indexOf("\\") + 1);
    ext = file.slice(file.indexOf(".")).toLowerCase();
    for(var i = 0; i < extArray.length; i++){
        if(extArray[i] == ext){
            allowSubmit = true; break;
            return true; break;
        }
    }
}
if(allowSubmit == true){
    praca.submit();
}
else{
    alert("Prosimy wysyłać tylko pliki typu: "
    + (extArray.join(" ")) + "\n(Microsoft Word, Adobe Reader)."
    + "\nProszę wybrać nowy plik i wysłać ponownie.");
    allowSubmit = false;
    return false;
}


Problem objawia się w taki sposób, że jeśli załączę plik z rozszerzeniem innym niż *.doc lub *.pdf, to wyskakuje alert.
Niestety, w Operze i Firefoksie nawet po załączeniu plików z *.doc lub *.pdf wyskakuje ten alert...

Sprawdźcie proszę, gdzie tkwi błąd, bo ja swoje możliwości i znajomość JS już wyczerpałem...


Pozdrawiam
melkorm
nie lepiej zrobić to po stronie php? bo i tak bedziesz musiał to zrobić po stronie php tongue.gif
mpps
Cytat(melkorm @ 18.03.2009, 12:54:44 ) *
nie lepiej zrobić to po stronie php? bo i tak bedziesz musiał to zrobić po stronie php tongue.gif

czemu 'będę musiał'?
na razie chciałbym to rozwiązać w JS.
później będzie czas na zmiany winksmiley.jpg
melkorm
bo ktoś mądry spreparuje timplejtke I Tobie wysle co tylko będzie mu się podobać smile.gif
mpps
no tak ale php działa po stronie serwera, a ja bym chciał to sprawdzić, zanim zostanie wysłane (czyli w trakcie, a nie po przesłaniu na serwer).
zelu
  1. plik.lastIndexOf(".gif")<0


A do tego i tak zrob walidacje w php winksmiley.jpg

Pozdro
mpps
no więc tak...

problem tkwi w skrypcie w linii:
  1. while(file.indexOf("\\") != -1){

...próbowałem:
  1. while(file.indexOf("") != -1){

...i
  1. while(file.indexOf("\") != -1){

...i
  1. while(file.indexOf("\\\") != -1){

...i
  1. while(file.indexOf("/") != -1){

...i
  1. while(file.indexOf("//") != -1){

...i nic, tzn. generalnie błędy.

tak więc + dla @melkorm, bo zmusił do przerobienia skryptu na php guitar.gif
i o JS trzeba będzie chyba już w ogóle zapomnieć, bo ktoś sobie wyłączy obsługę w przeglądarce i lipa będzie
i + dla @zelu, bo napisał coś czarodziej.gif
zelu
Cytat(mpps @ 19.03.2009, 01:50:58 ) *
i o JS trzeba będzie chyba już w ogóle zapomnieć, bo ktoś sobie wyłączy obsługę w przeglądarce i lipa będzie



Walidacja przez JS jest spoko, bo mozesz bez przeladowania strony pokazac uzytkownikowi co wpisal zle... Po prostu trwa to szybciej smile.gif
Ale tak jak napisales ktos moze wylaczyc sobie JS, wiec wlasnie dlatego powinna byc druga walidacja w php :] Tak dla pewnosci smile.gif


Pozdro
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.