20. november 2007 - 20:30Der er
25 kommentarer og 1 løsning
Problemer med at slette formfelt og lave popup
Hej
Har en uploadfunktion, hvor jeg kontrollerer, at det er jpg upload vha javascript ... det virker fint. Men jeg ville gerne slette indholdet af feltet, hvis brugeren har prøvet at uploade fx gif og har fået fejl. Det virker dog ikke som vist herunder, og jeg har også prøvet med en myForm.FILE1.clear();
Koden ser sådan ud:
<script LANGUAGE="JavaScript"> function valider(myForm) { if ( myForm.FILE1.value.length > 0 ) { var reg = /\.jpe?g$/i; if(myForm.FILE1.value.match(reg))return true;) alert ("Du skal angive et .jpg- eller .jpeg-billede."); myForm.FILE1.value=''; myForm.FILE1.focus(); return false; } else { alert ("Du skal angive et billede."); myForm.FILE1.focus(); return false; };
return true; }; </script>
Derudover ville jeg gerne indsætte en pop-up, hvis når opload går i gang, som giver besked om, at opload kører. Det er noget i stil med alert('Tålmodighed') ... men hvordan indarbejder jeg det i ovenstående???
En "reset" vil jo så slette alle andre felter også (man kan måske gemme dem med javascript, og hente dem igen). Men du kan jo bare lade være med at slette feltet...?
Nej det gør jeg heller ikke selv ... det er ellers meget moderne :-)
Kan du også hjælpe mig med et pop-up, når brugeren så har valgt en jpg fil. Jeg ville gerne lave en alert eller et desideret pop-up vindue, som så lukkes igen, når brugeren kommer over på uploadsiden (efter opload). Tanken er, at informere brugeren om, at det kan tage noget tid at uploade.
Lige nu har jeg indsat et pop-up som en onclick i min send-knap. Men så får jeg pop-up'en også når der er valgt en forkert fil som fx gif, og brugeren derfor returneres til formularen (upload er så ikke i gang). Jeg kan ikke rigtig få det til at virke, når jeg prøver at indsætte det i funktionen (nok fordi jeg ikke er helt skarp på javascript).
Du kunne lave din popup lige før din "return true;" - lidt mere tricket at få den fjernet, når uploaden er færdig. (...hvad du nu mener med popup...)
Ellers ville jeg bare lave en simpel løsning: en animeret gif, man sætter på mens den uploader, og den er så væk på næste side.
Du er iøvrigt også klar over, at dit check for fil-extension på klienten i Javascript, kun kan betragtes som en hurtig fejlbesked til brugeren. Du skal yderligere lave et check på serveren, da man ellers vil kunne uploade vilkårlige filer, fx PHP-filer.
Havde egentlig ikke tænkt over check på serveren, men det er da nok en god ide. Det burde være ret simpelt. Men jeg er da ikke sikker på at du har ret i, at det er muligt at vælge fx php-filer. Jeg har lige prøvet at oploade en asp-fil ... det kunne jeg ikke. Ikke desto mindre laver jeg et servercheck ... better safe than sorry.
Med pop-up mener jeg bare en død html side, hvor jeg fjerner scrollbar, menulinjer m.v. og giver en kort besked til brugeren. Har prøvet at indsætte en
Dem, der vil uploade en php-fil, vil nok ikke bruge dit script, eller sågar en browser. Derfor altid, altid, altid check extension på filen på serveren.
Prøv bare at sætte din linie med "window.open" ind som den står. Problemet er bare at få den væk igen når upload er færdig.
Den med gif-fen: <img src="blank.gif" id="g"> og så document.getElementById("g").src="nogetderbevægersig.gif";
Nej - alert(7) var en lille test for at være sikker på du aldrig kom der ned.
Jeg ville nok tænke lidt over rækkefølgen af dine tests med if-sætninger, så der ikke står en "return true" og flagrer midt i det hele, og heller ikke er en overflødig "return true" i bunden. Noget i retning af
if (...fejl1...) { .... return false; } if (...fejl2...) { .... return false; } // ingen fejl, juhuu return true
Fik overaskende din anbefaling til at virke ... næsten :-)
Scriptet virker ok mht. jpg, men desværre kontrollerer den ikke for nullængde først. Dvs. at jeg får en "du skal vælge jpg", hvis jeg bare trykker send uden at vælge noget overhovedet. Hvorfor det? Scriptet ser sådan ud nu:
<script LANGUAGE="JavaScript"> function valider(myForm) {
var reg = /\.jpe?g$/i; if (myForm.FILE1.value.length = 0) { alert ("Du skal angive et billede."); myForm.FILE1.focus(); return false; } if (!myForm.FILE1.value.match(reg)) { alert ("Du skal angive et .jpg- eller .jpeg-billede."); myForm.reset(); myForm.FILE1.focus(); return false; } // ingen fejl, juhuu document.getElementById("g").style.visibility="visible"; return true }; </script>
Jeg har lige stillet endnu et spørgsmål relateret til dette. Måske kan du hjælpe mig med at udvide ovenstående, så den også accepterer gif (det har jeg pludselig brug for i anden forbindelse). Se evt. spørgsmålet her:
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.