Avatar billede Slettet bruger
11. juni 2008 - 10:58 Der er 9 kommentarer og
1 løsning

Fejl i script: IF-sætninger

Jeg laver et lille tjek i forbindelse med upload:

<script language="JavaScript" type="text/JavaScript">
<!--
function CheckFileType(){
var filename = document.upload_fil.file.value;
var filelength = parseInt(filename.length) - 3;
var fileext = filename.substring(filelength,filelength + 3);

if (document.upload_fil.file.value != ""){


if (fileext.toLowerCase() != "pdf"){

var agree=confirm("Filtype: "+fileext+"\n\nKun PDF-filer bør uploades.\nØnsker du at fortsætte?");
if (agree)
vent_venligst.style.display='block';

    return true;
else
    return false;
else
vent_venligst.style.display='block';
        return true;
        }
    }
    }
//-->
</script>

Det er sikkert noget med min ekstra IF-sætning der er blevet tilføjet der volder problemer. Er der en kyndig der vil tjekke mit script... Jeg ønsker - som det nok trods alt fremgår af ovenstående - følgende:

1) Først tjekker jeg at fil-feltet ikke er tomt.
2) Er fil-feltet IKKE tomt, så tjekker jeg om filtype er "pdf"
3) Hvis fil-type IKKE er "pdf" får bruger et valg: "Fortsætte JA /NEJ"
4) Hvis bruger vælger "ja" - så upload alligevel
5) Hvis bruger vælger "nej" - så submit ikke


PS: "vent_venligst.style.display='block';" er blot et layer der skal vises, hvis bruger submitter form.

Håber det giver mening :-)
Avatar billede w13 Novice
11. juni 2008 - 11:04 #1
Så er det vel sådan her:
---------------------------------------------
<script language="JavaScript" type="text/JavaScript">
<!--
function CheckFileType(){
    var filename = document.upload_fil.file.value;
    var filelength = parseInt(filename.length)-3;
    var fileext = filename.substring(filelength,filelength+3);

    if(document.upload_fil.file.value!=""&&fileext.toLowerCase()!="pdf"){
        var agree=confirm("Filtype: "+fileext+"\n\nKun PDF-filer bør uploades.\nØnsker du at fortsætte?");
        if(agree)vent_venligst.style.display='block';
        return true;
    }else{
        return false;
    }
}
//-->
</script>
Avatar billede w13 Novice
11. juni 2008 - 11:06 #2
I øvrigt burde det ikke være nødvendigt at parseInt her:
    var filelength = parseInt(filename.length)-3;
Dvs. du kan rette til:
    var filelength = filename.length-3;
Avatar billede Slettet bruger
11. juni 2008 - 11:11 #3
Hej, tak for svar - der er et eller andet galt, for den submitter formen, selvom man vælger "Cancel".
Avatar billede w13 Novice
11. juni 2008 - 11:15 #4
Nå ja, selvfølgelig, det overså jeg. Brug:
------------------------------------------
<script language="JavaScript" type="text/JavaScript">
<!--
function CheckFileType(){
    var filename = document.upload_fil.file.value;
    var filelength = filename.length-3;
    var fileext = filename.substring(filelength,filelength+3);

    if(document.upload_fil.file.value!=""&&fileext.toLowerCase()!="pdf"){
        var agree=confirm("Filtype: "+fileext+"\n\nKun PDF-filer bør uploades.\nØnsker du at fortsætte?");
        if(agree){
            vent_venligst.style.display='block';
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}
//-->
</script>
Avatar billede Slettet bruger
11. juni 2008 - 11:16 #5
Hmm ja - men der er stadig fejl - for hvad nu hvis fil-typen ER pdf - så submitter den jo ikke (som jeg lige kan se dit script)?
Avatar billede w13 Novice
11. juni 2008 - 11:21 #6
:)
-------------------------------------------
<script language="JavaScript" type="text/JavaScript">
<!--
function CheckFileType(){
    var filename = document.upload_fil.file.value;
    var filelength = filename.length-3;
    var fileext = filename.substring(filelength,filelength+3);

    if(document.upload_fil.file.value!=""){
        return false;
    }else if(fileext.toLowerCase()!="pdf"){
        var agree=confirm("Filtype: "+fileext+"\n\nKun PDF-filer bør uploades.\nØnsker du at fortsætte?");
        if(agree){
            vent_venligst.style.display='block';
            return true;
        }else{
            return false;
        }
    }
    return true;
}
//-->
</script>
Avatar billede Slettet bruger
11. juni 2008 - 11:22 #7
Hvad siger du til:

<script language="JavaScript" type="text/JavaScript">
<!--
function CheckFileType(){
    var filename = document.upload_fil.file.value;
    var filelength = filename.length-3;
    var fileext = filename.substring(filelength,filelength+3);

    if(document.upload_fil.file.value!=""){
   
    if (fileext.toLowerCase() != "pdf"){
        var agree=confirm("Filtype: "+fileext+"\n\nKun PDF-filer bør uploades.\nØnsker du at fortsætte?");
        if(agree){
            vent_venligst.style.display='block';
            return true;
        }else{
            return false;
        }
    }else{
        return true;
    }
    }
}
//-->
</script>
Avatar billede Slettet bruger
11. juni 2008 - 11:27 #8
Jeg vil nemlig gerne at den submitter selvom feltet er tom - da jeg har lavet noget serverside tjek af felterne i asp - altså der markerer hvilke felter der mangler. Kan du leve med min kode? :-)
Avatar billede roenving Novice
11. juni 2008 - 12:45 #9
-- jeg ville starte fra formen, så kan man lave det elegantere:

<script type="text/javascript">
function validerFileType(f){
  var fil = f.file.value;//I øvrigt ikke en god ide, at du bruger navnet 'file' på en input type="file"
  var filetype = fil.replace(/^.+\.(.{3})$/i,"$1");
  if(!fil.match(/^.+\.(|pdf)$/i)){
    if(!confirm("Filetype: " + filetype + "\n\nKun PDF-filer bør uploades.\nØnsker du at fortsætte?")
      return false;
  }
  document.getElementById("vent_venligst").style.display='block';
  return true;
}
</script>

<form ... onsubmit="validerFileType(this);">

-- ikke alvorligt gennemarbejdet, men ideen kan forhåbentlig ses, og kan briges til mange andre upload-check !-)
Avatar billede roenving Novice
11. juni 2008 - 12:46 #10
Hov, der mangler i hvert fald en parantes-slut:

    if(!confirm("Filetype: " + filetype + "\n\nKun PDF-filer bør uploades.\nØnsker du at fortsætte?"))
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