Avatar billede rar_jacobsen Nybegynder
17. maj 2009 - 20:43 Der er 5 kommentarer og
1 løsning

Check på Input:File felt

Hej derude,

Jeg vil først gerne starte med at sige jeg ingen erfaring har med JavaScript, men var så modig som at tro det kunne jeg godt gennemskue :o(

Jeg har i nedenstående script fået alt til at virke med undtagelse af afsnittet med "Basic validation for Photo"

Er der nogen der kan se hvad der går galt? Det er sat op til at jeg ved hjælp af en knap kan tilføje så mange input:file felter som jeg ønsker, deraf "addFileUploadBox.lastAssignedId"

Jeg ønsker at checke for om der er valgt en fil i input:file og at den valgte fil er af typen .gif, .jpg. osv. før der genereres et nyt felt.

    <script type="text/javascript">
        function addFileUploadBox() {
            if (!document.getElementById || !document.createElement)
                return false;

            var _divUploadMessage = document.getElementById("divUploadMessage");
            var _pararaphUploadArea = document.getElementById("pararaphUploadArea");
            if (!_pararaphUploadArea)
                return;

            //Check and assign new FileboxID
            if (!addFileUploadBox.lastAssignedId)
                addFileUploadBox.lastAssignedId = 100;

            //Basic validation for Photo
            var filPhoto = document.getElementById("filebox" + addFileUploadBox.lastAssignedId);
            if (filPhoto.value.length == 0) {
                alert("Please fill out your name.\n");
                _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Please specify the file.</span>';
                _divUploadMessage.style.display = '';
                filPhoto.focus();
                return;
            }

            var regExp = /(.*\.([gG][iI][fF]|[jJ][pP][gG]|[jJ][pP][eE][gG]|[pP][nN][gG]|[bB][mM][pP])$)/;
            if (!regExp.test(filPhoto.value)) {
                _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Invalid file type. Only supports jpg, gif, png and bmp.</span>';
                _divUploadMessage.style.display = '';
                filPhoto.focus();
                return;
            }

            // Add new br and box
            var newLine = document.createElement("br");
            _pararaphUploadArea.appendChild(newLine);

            var newUploadBox = document.createElement("input");

            // The new box needs a name and an ID
            // Set up the new input for file uploads
            newUploadBox.type = "file";
            newUploadBox.size = "45";

            addFileUploadBox.lastAssignedId++;
            newUploadBox.setAttribute("id", "filebox" + addFileUploadBox.lastAssignedId);
            newUploadBox.setAttribute("name", "filebox" + addFileUploadBox.lastAssignedId);
            _pararaphUploadArea.appendChild(newUploadBox);
        }
    </script>
Avatar billede rar_jacobsen Nybegynder
18. maj 2009 - 12:12 #1
Slet ingen som har kan hjælpe med nedenstående?

 
var filPhoto = document.getElementById("filebox" + addFileUploadBox.lastAssignedId);
    if (filPhoto.value.length == 0) {
    alert("Please fill out your name.\n");
    _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Please specify the file.</span>';
    _divUploadMessage.style.display = '';
    filPhoto.focus();
    return;
    }

var regExp = /(.*\.([gG][iI][fF]|[jJ][pP][gG]|[jJ][pP][eE][gG]|[pP][nN][gG]|[bB][mM][pP])$)/;
    if (!regExp.test(filPhoto.value)) {
    _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Invalid file type. Only supports jpg, gif, png and bmp.</span>';
    _divUploadMessage.style.display = '';
    filPhoto.focus();
    return;
    }


Regards,
Rütger Jacobsen
Avatar billede roenving Novice
18. maj 2009 - 12:33 #2
Een ting kan da laves meget simplere, nemlig regexp'en:

var regExp = /\.(gif|jpe?g|png|bmp)$/i;

-- og addFileUploadBox er jo ikke et objekt men en funktion, så ideen med at tilføje attributter lyder noget tvivlsom ...
Avatar billede rar_jacobsen Nybegynder
18. maj 2009 - 12:56 #3
Jeg har prøvet at køre med var regExp som du skriver den, men så virker den ikke i FireFox ...

Det e rikke fordi den fejler når jeg køre scriptet, den gør bare ganske enkelt ikke noget, men fjerner jeg alt ovenstående fra #1 så tilføjer den fint en ny boks?

Det er ligeså snart jeg smider kontrol af length og extension ind det går galt.
Avatar billede roenving Novice
18. maj 2009 - 15:12 #4
Går det ikke galt i linjen:

var filPhoto = document.getElementById("filebox" + addFileUploadBox.lastAssignedId);

?-)
Avatar billede rar_jacobsen Nybegynder
18. maj 2009 - 16:01 #5
Hvis jeg kommenterer alt ud i og stadig beholder:
var filPhoto = document.getElementById("filebox" + addFileUploadBox.lastAssignedId);

så virker det stadig fint, men lige så snart jeg bruger den til noget filPhoto til noget så går det galt. Jeg har en forud defineret input:file boks som hedder filebox100, og det burde så være getElementById("filebox" + addFileUploadBox.lastAssignedId) delen?


Er det helt forkert at gøre det sådan?
Avatar billede rar_jacobsen Nybegynder
29. januar 2013 - 22:14 #6
Lukker - fandt løsningen andet sted

Beklager jeg aldrig meldte tilbage
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester