Tjekker hvordan? Mener du at du vi undersøge, at der skal være mindst eet af de 9 felter med en fil angivet, men det er ligegyldigt hvilken, og at der gerne må være flere?
function checkFiles(f){ e = f.elements,files=false; for(i=0;e.length>i;i++){ if(e.type=='file')files=(e.value!="")||files; } if(!files){ alert("Der skal vælges mindst én fil"); f.file1.select(); f.file1.focus(); return false; } }
function validate(f) { var count=0; for (i=1;i<=9;i++) { if (f.elements["file"+i].value!='') { count++; } } if (count==0) { alert("Husk...."); return false; } return true; }
jeg prøvede lige roenvings og den submitter godt nok hvis der er en fil i en af felterne, men den kommer også med fejlen, hvis ikke der er noget i den første.
Det kan være mig der fik skrevet forkert. Grunden til at jeg satte nedenstående ind, var for at vise hvad den skulle gøre, det er ikke et must at file1 skal være udfyldt. det kan lige så godt være file3 bare der er en der er udfyldt.
if(f.file1.value==""){ alert("Der skal vælges mindst én fil"); f.file1.select(); f.file1.focus(); return false; }
Skal jeg referere til e[i], hvor jeg referere til det pågældende element?
koden ser nu således ud:
function valider(f) { e = f.elements,files=false,flt=null; for(i=0;e.length>i;i++){ if(e.type=='file'&&e.value==""){ alert("Der skal vælges mindst én fil"); e[i].select(); e[i].focus(); return false; } }
okay, jeg kan godt se at mit eksempel ikke kan holde, for det tjekker ikke på at det kun er nødvendigt at en af felterne er udfyldt, så jeg er gået tilbage til roenvings sidste bud. men det submitter selvom der ikke er valgt nogen fil, den kommer godt nok med fejlmedelselsen, men så kører den videre. Koden ser nu således ud:
function valider(f) { e = f.elements,files=false,flt=null; for(i=0;e.length>i;i++){ if(e.type=='file'&&e.value!=""){ if(!e.value.match(/\.(txt|doc|pdf|xls)$/i)){ flt = (!flt)?e:flt; } files=true; } } if(flt){ alert("Der skal vælges filer af typen .txt, .doc, .pdf, .xls"); flt.select(); flt.focus(); document.getElementById('file' + i).style.borderColor='red'; return false; } if(!files){ alert("Der skal vælges mindst én fil"); f.file1.select(); f.file1.focus(); return false; }
RunProgress(); var strBtnSubmit=document.UploadForm.elements.upload; strBtnSubmit.disabled=true; strBtnSubmit.value='Vent venligst ...'; document.UploadForm.submit(); }
Ja, du får vel stadig en javascript fejl, ikke? i'et i document.getElementById('file' + i).style.borderColor='red'; har jo ikke en rigtig værdi på det sted.
Nu har jeg siddet det meste af dagen, og den skide validering virker stadig ikke, men for at andre kan give en hånd med, så kommer her lige et update på hvordan metoden efterhånden ser ud:
function SubmitForm(f) { var submit = 'true'; var count=0; for (i=1;i<=9;i++) { if (f.elements["file"+i].value!='') { count++; } } if (count==0) { alert("Der skal vælges mindst én fil"); f.file1.select(); f.file1.focus(); submit = 'false'; return false; }
count=0; for (i=1;i<=9;i++) { if (f.elements["file"+i].value.match(/\.(txt|doc|pdf|xls)$/i)) { alert("Der skal vælges filer af typen .txt, .doc, .pdf, .xls"); flt.select(); flt.focus(); document.getElementById('file' + i).style.borderColor='red'; submit = 'false'; return false; } }
Du har sikkert også prøvet at sidde med en fejl en hel dag unden at komme videre, og til sidst bliver man lidt træt af det, det er vel ganske forståligt.
eneste problem er nu at den ved et somt felt ikke får lov til at submitte, grundet at den jo ikke matcher denne her: if (!elm.value.match(/\.(txt|doc|pdf|xls)$/i)), så der skal vel også står at feltet kan være tomt.
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.