Et kort eksempel på hvordan man kan teste om navnene er ens: for (i=1;i<=20;i++) { elm = f.elements["file"+i]; if (elm.value!='') { count = true; } if (!elm.value.match(/\.(gif|png|jpg)$|^$/i)) { flt = (!flt)?elm:flt; } for (j=i+1;j<=20;j++) { if (elm.value == f.elements["file"+j].value) { alert("FEJL - navnene er jo ens"); } } }
...hvis du vil have hjælp til at implementere en smartere måde at udskrive fejlen på siger du lige til (altså hvis du vil have noget i stil med det du gør ved filendelserne).
Det er noget galt, for dengår i en uendelig løkke. Du får lige hele min valinerings kode, så du kan se hvad jeg gør. Er det muligt at den kan markere de felter hvor filerne er ens?
function valider(f){ if(f.templateName.value==""){ alert("Skabelonnavn skal udfyldes"); f.templateName.select(); f.templateName.focus(); return false; }
if(f.templateType.value==0){ alert("Der skal vælges en skabelontype"); f.templateType.focus(); return false; }
if(f.templateFile.value==0){ alert("Der skal vælges en skabelonfil"); f.templateFile.select(); f.templateFile.focus(); return false; }
if (!f.templateFile.value.match(/\.(htm|html)$|^$/i)) { alert("Skabelonen skal være af typen .htm og .html"); f.templateFile.style.backgroundColor='red'; return false; }
var submit = true,flt=null; var count=false;
for (i=1;i<=20;i++) { elmT = f.elements["file"+i]; elmT.style.backgroundColor='#f4f4f4'; }
for (i=1;i<=20;i++) { elm = f.elements["file"+i]; if (elm.value!='') { count = true; } if (!elm.value.match(/\.(gif|png|jpg)$|^$/i)) { flt = (!flt)?elm:flt; } for (j=i+1;j<=20;j++) { if (elm.value == f.elements["file"+j].value) { alert("De markerede filer er ens, du kan kun uploade den samme fil en gang."); } } }
if(flt){ alert("Grafikfilerne til skabelonen skal være af typen .gif, .png eller .jpg"); flt.style.backgroundColor='red'; return false; }
tja, jeg tænkte lidt på hvordan hele siden i sin helhed så ud - altså med form og den slags, altså for at teste problemmet af. Det sådan set lige meget med de andre funktioner, da det er det lille stykke kode, som du viste mig, som er vigtig (og hvad der hører til den), men jeg kunne godt tænke mig at se den form du bruger funktionen på.
tja, det var ikke nogen uendelig løkke - bare en hulens masse alert-bokse ;-)
Problemmet var at den også tog tomme elementer med, så for at løse det kan du skrive: for (i=1;i<=20;i++) { elm = f.elements["file"+i]; if (elm.value!='') { count = true; for (j=i+1;j<=20;j++) { if (elm.value == f.elements["file"+j].value) { elm.style.backgroundColor = "red"; f.elements["file"+j].style.backgroundColor = "red"; filnavne_ens = true; } } } if (!elm.value.match(/\.(gif|png|jpg)$|^$/i)) { flt = (!flt)?elm:flt; }
}
if (filnavne_ens) { alert("Du har valgt to ens filnavne"); return false; }
Den er der næsten. Nu markere den de to felter der er ens og kommer med en fejl, men hvis jeg så sletter indholdet af felterne, så skriver den stadig at der er en fejl.
nåja, du skal lige i starten af valider-funktionen skrive "filnavne_ens = false;": function valider(f){ filnavne_ens = false; if(f.templateName.value==""){ alert("Skabelonnavn skal udfyldes"); f.templateName.s
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.