Avatar billede ravnkilde Nybegynder
23. juni 2008 - 11:57 Der er 10 kommentarer

Validering af checkboxes - vælg mindst én

Jeg har en side med 2 checkboxes, kaldet E2_1 og E2_2. Brugeren skal vælge mindst én af disse for at kan submitte formen.

Jeg har forsøgt mig med nedenstående kode, men det virker ikke. Kan du hjælpe? Jeg skal vel OR (||) med?


function isReady(form)
{
    if(!document.form.E2_1[0].checked || !document.form.E2_2[0].checked)
    {
    alert("Please check at least one of the checkboxes");
    return false;
    }
    return true;
}
Avatar billede pidgeot Nybegynder
23. juni 2008 - 12:00 #1
Fordi du negerer de individuelle "checked", skal du bruge && - lige nu står der HVIS (E2_1 IKKE er checked) ELLER (E2_2 IKKE er checked).

Havde du ventet med negeringen til sidst, havde || været korrekt:

if(!(document.form.E2_1[0].checked || document.form.E2_2[0].checked))

HVIS IKKE (E2_1 er checked ELLER E2_2 er checked)
Avatar billede ravnkilde Nybegynder
23. juni 2008 - 12:57 #2
tak, pidgeot.

Jeg har indsat nedenstående kode, men får alligevel lov til at submitte siden!

<script language="javascript">
function isReady(form)
{
    if(!(document.form.E2_1[0].checked || document.form.E2_2[0].checked))
    {
    alert("Please check at least one of the reasons");
    return false;
    }
    return true;
}
</script>
Avatar billede pidgeot Nybegynder
23. juni 2008 - 13:15 #3
Hvordan ser dit form-tag ud?
Avatar billede ravnkilde Nybegynder
23. juni 2008 - 13:21 #4
<form name="form" method="post" action="../data/E_2_data.asp" onSubmit="return isReady(this)">

<input name="E2_1" type="checkbox" value="Yes">
<input name="E2_2" type="checkbox" value="Yes">
Avatar billede w13 Novice
23. juni 2008 - 13:29 #5
Jeg ville nok anbefale at give formen et andet name.
Avatar billede pidgeot Nybegynder
23. juni 2008 - 13:34 #6
Og du får ikke vist din alert? Ændrer det ved noget hvis du bruger form i stedet for document.form (begge dele bør egentlig virke hvis jeg husker ret, men da du jo har den ønskede form som parameter, så det vil være pænere at bruge den)? Har du evt. mulighed for at fremvise siden?

(Husk også at JavaScript-validering altid bør supplementeres med server-side validering, så man er sikker på valideringen foretages)
Avatar billede ravnkilde Nybegynder
23. juni 2008 - 13:40 #7
Jeg har prøvet at ændre til nedenstående, men promptes fortsat ikke, når jeg ikke har valgt mindst én af de to bokse.

<script language="javascript">
function isReady(form_kic)
{
    if(!(document.form_kic.E2_1[0].checked || document.form_kic.E2_2[0].checked))
    {
    alert("Please check at least one of the reasons");
    return false;
    }
    return true;
}
</script>
</head>


<form name="form_kic" method="post" action="../data/E_2_data.asp" onSubmit="return isReady(this)">
Avatar billede ravnkilde Nybegynder
24. juni 2008 - 10:03 #8
har lavet denne kode, som virker efter hensigten:

<script language="javascript">
function isReady(form)
{
    if (document.form.E2_1.checked == false && document.form.E2_2.checked == false)
    {
    alert("Please check at least one of the reasons");
    return false;
    }
    return true;
}
</script>
Avatar billede g1mzee Nybegynder
27. juni 2008 - 11:57 #9
ravnkilde.
vil sige du laver en variabel hvor du gemmer din false / true

altså .

var valid = true; (det den er som defualt)

og hvis der er fejl, så.

valid = false.


til sidst istedet for "return true" så tager du:
return valid;

håber det hjalp :)
Avatar billede roenving Novice
27. juni 2008 - 12:13 #10
-- mens formens navn er da fuldstændig ligegyldig:

<script type="text/javascript">
function isReady(f)
{
    if (!f.E2_1.checked && !f.E2_2.checked)
    {
    alert("Please check at least one of the reasons");
    return false;
    }
    return true;
}
</script>

-- deter ovenikøbet direkte en fejl at referere til document-objektet, når selve formen medsendes som parameter, jeg ville da godt nok også have svært ved at finde rundt i, hvad 'form' refererer til, når der lige pludselig er tre forskellige objekter, der kan være mulig resultat af den reference !-)
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