Form submit probleem met file,hidden inputs, validate
Het definitieve checken gebeurt in PHP.
Maar om te voorkomen dat een file onnodig temp wordt opgeslagen
validate ik de form ook in javascript.
De procedure is al volgt:
1 - een bestand wordt gekozen
2 - (eventueel tekst en) bestand worden gecheckt.
3 - bij oke wordt de 'submitknop' getoond.
4 - versturen
Wanneer ik alles de eerste keer juist heb werkt alles door naar PHP.
En wordt het bestand opgeslagen.
Is er wat verkeerd dan komt vanuit javascript de melding wat er verkeerd is.
Maar dan wordt de vorige juiste submit herhaald, en weer opnieuw opgeslagen.
Ik heb al geprobeerd met aparte input file reset, met form.reset(), met location.reload();
Ook wat geprobeerd met onsubmit = "return showname()".
Maar krijg het niet voor elkaar.
De uitwerking is dan wat anders...
Maar in ieder geval niet correct.
Hier wat stukjes uit de javascript en HTML.
Myvar is de waarde voor oke(1) of fout(0);
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form id = "vorm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">
<div class="upload" id="upload"><input name="userfile" id = "userfile" type="file" style="text-align:left;" onchange = "showname()"></div>
<div class="uploadA"><input type="image" id="process" name="process" type="submit" value= "submit" src="button2.png" border="0"></div>
</form>
<script>
var myVar = 1;
function showname () {
.
.
.
.
.
if (myVar == 0)
{
//document.getElementById("userfile").value = null;
//vorm.reset();
//location.reload();
}
}
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">
<div class="upload" id="upload"><input name="userfile" id = "userfile" type="file" style="text-align:left;" onchange = "showname()"></div>
<div class="uploadA"><input type="image" id="process" name="process" type="submit" value= "submit" src="button2.png" border="0"></div>
</form>
<script>
var myVar = 1;
function showname () {
.
.
.
.
.
if (myVar == 0)
{
//document.getElementById("userfile").value = null;
//vorm.reset();
//location.reload();
}
}
Toevoeging op 20/10/2017 14:48:20:
Ik denk dat het opgelost is...
Myvar weg en in die plek: return false;
Ook al geprobeerd om image in de button te zetten bij CSS.
Maar werkte ook niet.
Chrome en Safari geven geen probleem.
Code (php)
1
2
3
2
3
<div class="uploadA">
<input type="image" id="process" value= "submit" name="process" src="button2.png" border="0">
</div>
<input type="image" id="process" value= "submit" name="process" src="button2.png" border="0">
</div>
Gewijzigd op 21/10/2017 15:50:45 door Hans De Ridder
Als het foutloos invullen van het formulier zo'n heikel punt is zou je de bestanden apart kunnen uploaden (in een apart formulier - zie voor inspiratie bijvoorbeeld hoe je in gmail attachments kunt toevoegen), maar dit houdt dan ook in dat je het verwijderen (naast het verplaatsen naar een permanente(re) locatie) van bestanden zelf zult moeten regelen.
EDIT: het is dus in principe geen probleem dat er bestanden worden geupload, deze worden normaal gesproken vanzelf opgeschoond.
Gewijzigd op 21/10/2017 18:48:05 door Thomas van den Heuvel
Het probleem is nu opgelost...
Toch via button. En in CSS een image.
Toen werkte alles.
Wat betreft de tijdelijke opslag.
Ik praat over validate via javascript (clientside).
En als er fouten in zitten wordt er niet gesubmit.
Dus niet doorgestuurd naar PHP.
Dan wordt er toch niks opgeslagen?
Is alles oke dan wordt alles doorgestuurd naar de PHP.
En wederom gevalideerd.
Gewijzigd op 21/10/2017 21:40:59 door Hans De Ridder
Als er niets verstuurd wordt, wordt er ook niets opgeslagen nee.