09. september 2001 - 20:05Der er
20 kommentarer og 3 løsninger
Test af to udtryk med IF
Hello! Vi prøver lige en gang til :) Jeg vil godt teste om de 2 felter ikke er blevet udfyldt. if (document.form1.firstn.value == \"\" && document.form1.lastn.value == \"\") { alert(\"You havent select nor filled in an author\"); return false; } Håber i kan hjælpe.
Du vil vel have den til at reagere, både ved een fejl og ved begge fejl:
if (document.form1.firstn.value == \"\"){ alert(\"Select an author\"); document.form1.firstn.focus(); return false; } if (document.form1.lastn.value == \"\"){ alert(\"Fill in the author-field\"); document.form1.lastn.focus(); return false; }
Eller er din fejl måske, at du har en default select-værdi i den ene, så du skal teste for om fritekst-indtastningsfeltet er tomt eller om select-inputtet er default, altså:
if (document.form1.firstn.value == \"Vælg forfatter\" && document.form1.lastn.value == \"\") { alert(\"You haven\'t selected nor filled in an author\"); return false; }
if (document.form1.firstn.value == \"\" && document.form1.lastn.value == \"\") { if (document.form1.author_id.value == \"\") { alert(\"You havent select nor filled in an author\"); setfocus(\'firstn\'); return false; }
}
Hvis der ikke er indtastet noget i input felterne så skal den tjekke om der er valgt noget i select boxen. author_id er en selectbox, firstn og lastn er inputboxe. Beklager fejlen :) Setfocus er en funktion der ser sådan ud:
function setfocus(field) { document.form1.elements[field].focus(); }
Hvis du skal teste en select, skal du undersøge om hver option er checked:
for (i=0;i<document.form1.author_id.length;i++){ if (document.form1.author_id[i].checked)return true; } alert(\"You haven\'t selected nor filled in an author\"); document.form1.firstn.focus(); return false;
<ole> Hvis bare der skal testes for, at den første option ikke er valgt, kan man skrive dette, der afvikler en del hurtigere:
var f = document.form1; if (f.firstn.value == \"\" && f.lastn.value == \"\" && f.author_id.selectedIndex != 0) { alert(\"You havent select nor filled in an author\"); f.firstn.focus(); return false; }
var f = document.form1; if (f.firstn.value == \"\" && f.lastn.value == \"\" && f.author_id.selectedIndex == 0) { alert(\"You havent select nor filled in an author\"); f.firstn.focus(); return false; }
Hvis fornavn og efternavn er udfyldt, skal den vel returnere true - og hvis de ikke er udfyldt, skal den vel checke din dropdown og se, om forfatteren er valgt der...ikk\'? I så fald ville jeg nok skrive:
var f = document.form1; if (f.firstn.value != \"\" && f.lastn.value != \"\") { return true; } else { if (f.author_id.selectedIndex == 0) { alert(\"You havent select nor filled in an author\"); f.firstn.focus(); return false; } else { return true; } }
Helt i orden, at du korrekser os, men hva\' fa\'n har du gang i her ??
Mindst:
function checkEtEllerAndet(){ var f = document.form1; if (f.firstn.value != \"\" && f.lastn.value != \"\") { return true; } else { for (i=0;i<document.form1.author_id.length;i++){ if (document.form1.author_id[i].checked)return true; } alert(\"You havent select nor filled in an author\"); f.firstn.focus(); return false;
og jeg mener da, at det er i orden at anbringe H. C. Andersen i samme box som mig, godt nok er han på nogle punkter lidt forældet, men det kan vi vist sige os helt udenom allesammen.
jakoba >> den gav jeg vist den rigtige version af her: 09/09 2001 23:06:47 :) Hvornår er \'selectedIndex == -1\' ? Som du skriver de to if-sætninger, kan du ligeså godt have tre betingelser i én sætning. /mvh
Jeg troede: \'selectedIndex < 0\' (og vist altid == -1) ved \'fødslen\' medmindre den er initieret med en select sttribut i en af <option kommandoerne.
men en hurtig test viste at default starttilstanden er: selectedIndex = 0; options[0].selected = true;
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.