Avatar billede jenslund Juniormester
25. februar 2004 - 14:43 Der er 17 kommentarer og
1 løsning

Validering ved upload af fil

Følgende validering:

<script language="javascript">

<!--

function validate(){
if (document.upload.fil.value==''){alert("Husk at markere en fil til vedhæftning"); return false;}
else{return true;}
}

-->

</script>

Følgende kode (php):

    <form name=\"upload\" action=\"\" method=\"post\" enctype=\"multipart/form-data\">
    <tr>
        <td class=\"label\">Fil</td>
    </tr>
    <tr>
        <td><input type=\"file\" name=\"fil\" size=\"80\"></td>
        <input type=\"hidden\" name=\"step\" value=21>
        <input type=\"hidden\" name=\"matpack_id\" value = $matpack_id>
        <input type=\"hidden\" name=\"type\" value = $type>
        <input type=\"hidden\" name=\"max_file_size\" value=6000000>
        </td>
    </tr>
    <tr>
        <td align=\"left\"><br>Her kan du give dit material en title<br>
        <input type=\"text\" name=\"title\" value=\"\" size=\"64\">
        </td>
    </tr>
    <tr>
        <td align=\"left\">
        <input type=\"submit\" name=\"\" value=\"Tilføj fil\" CLASS=\"button_small\" onclick=validate();>

        </form>

*****

Og alligevel uploader den de skjulte værdier selvom feltet fil er tomt og alrten kommer op som den skal.

Hvad er der galt

vh
Jens
Avatar billede jenslund Juniormester
25. februar 2004 - 14:44 #1
alrten=alert'en
Avatar billede dk_akj Nybegynder
25. februar 2004 - 14:44 #2
function validate(){
if (document.upload.fil.length<1){alert("Husk at markere en fil til vedhæftning"); return false;}
else{return true;}
}
Avatar billede nute Nybegynder
25. februar 2004 - 14:46 #3
flyt 'onclick=validate();' til onsubmit på dit formular:

<form name=\"upload\" action=\"\" method=\"post\" enctype=\"multipart/form-data\" onsubmit="return validate();">
...
<input type=\"submit\" name=\"\" value=\"Tilføj fil\" CLASS=\"button_small\">
...
</form>
Avatar billede roenving Novice
25. februar 2004 - 14:46 #4
Du skal sætte den på form-tagget i stedet:

    <form name=\"upload\" action=\"\" method=\"post\" enctype=\"multipart/form-data\" onsubmit=\"return validate();\">
Avatar billede dk_akj Nybegynder
25. februar 2004 - 14:46 #5
sorry læste ikke ? ordenligt..

<input type=\"submit\" name=\"\" value=\"Tilføj fil\" CLASS=\"button_small\" onclick=return validate();>

//akj
Avatar billede jenslund Juniormester
25. februar 2004 - 14:50 #6
>> dk_akj >> lenght<1 virker ikke - alerten kommer slet ikke op
>> ALLE >> det nytter ikke at flytte/omdøbe onclick

Desuden

>> ALLE >> den går godt nok ind i alert'en - viser den - men handler forkert derefter ved klik på OK - så problemet må ligge i alert'en
Avatar billede roenving Novice
25. februar 2004 - 14:55 #7
Det er ikke en onclick på form-tagget, det er en onsubmit !-)
Avatar billede dk_akj Nybegynder
25. februar 2004 - 14:56 #8
function validate(){
    if (document.upload.fil.value=='')
    {
        alert("Husk at markere en fil til vedhæftning");
        return false;
    }
    else
    {
        document.upload.submit();
    }
}

-->

</script>

Følgende kode (php):

    <form name=\"upload\" action=\"\" method=\"post\" enctype=\"multipart/form-data\">
    <tr>
        <td class=\"label\">Fil</td>
    </tr>
    <tr>
        <td><input type=\"file\" name=\"fil\" size=\"80\"></td>
        <input type=\"hidden\" name=\"step\" value=21>
        <input type=\"hidden\" name=\"matpack_id\" value = $matpack_id>
        <input type=\"hidden\" name=\"type\" value = $type>
        <input type=\"hidden\" name=\"max_file_size\" value=6000000>
        </td>
    </tr>
    <tr>
        <td align=\"left\"><br>Her kan du give dit material en title<br>
        <input type=\"text\" name=\"title\" value=\"\" size=\"64\">
        </td>
    </tr>
    <tr>
        <td align=\"left\">
        <input type=\"button\" name=\"\" value=\"Tilføj fil\" CLASS=\"button_small\" onclick=validate();>

        </form>
Avatar billede jenslund Juniormester
25. februar 2004 - 14:56 #9
>> roenving >> som nævnt 'det nytter ikke at flytte/omdøbe onclick'
Avatar billede jenslund Juniormester
25. februar 2004 - 14:57 #10
>> roenving >> desuden går den som sagt rigtigt nok ind i alert'en - men forkert ud, så det er ikke der problemet ligger
Avatar billede jenslund Juniormester
25. februar 2004 - 14:59 #11
Problemet er at variablen step åbner bestemte dele af PHP'en op, hvorfor den ikke må sende step=21, når der ikke er nogen fil.
Avatar billede roenving Novice
25. februar 2004 - 15:08 #12
Hvis du har en onsubmit="return false;" i form-tagget vil den ikke sende nogetsomhelst !-)

-- og det er jo det, du ønsker !o]
Avatar billede jenslund Juniormester
25. februar 2004 - 15:09 #13
>> dk_akj >> Er forsøgt med ... else{document.upload.submit();} - det virker heller ikke - sorry.
Avatar billede jenslund Juniormester
25. februar 2004 - 15:11 #14
>> roenving >> forstår ikke hvad du mener - jeg ønsker at sende, men kun hvis der er vedhæftet en fil.
Avatar billede roenving Novice
25. februar 2004 - 15:20 #15
-- og det vil de tre forslag foroven gøre, fordi en return false fra funktionen vil være argument for den return, som står i onsubmit, så du skal bare gøre det _præcis_ som beskrevet:

onsubmit="return validate()"
Avatar billede jenslund Juniormester
25. februar 2004 - 15:27 #16
>> roenving >> du har åbnet mine øjne - jeg havde overset ændringen fra onclick=validate() til onsubmit="return validate()". Så den som onsubmit=validate(). Sorry - i havde alle tre ret fra starten - det var bare mig der var blind.

Send nogle svar -

Jens
Avatar billede roenving Novice
25. februar 2004 - 15:36 #17
Velbekomme '-)
Avatar billede roenving Novice
27. februar 2004 - 18:44 #18
-- og tak for points ;~}
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