webForumDet fria alternativet

Kolla 2 fält beroende på den 3:dje?

JavaScript

4 svar · 216 visningar · startad av LesPaul

Medlem sedan apr. 200449 inlägg
Frågan#1

Hej,
jag har 3 fält som jag vill kolla av om vissa kriterier infaller:

De 3 fälten:
falt1
falt2
falt3

Om falt3="no" då får inte falt1 och falt2 vara = ""
annars skall inte falt1 och falt2 kollas av utan endast falt 3.

Hur ser en javascript formula ut på det.

Jag har denna på de andra fälten där endast ett fält skall kollas:

// Kolla fält
if (document.form.falt.value == "")
{
alert("Fältet måste vara ifyllt");
return false
}

Kan man göra det enligt samma konstruktion så jag kan lägga det i JS-Headern skulle det vara bra.

Tacksam för hjälp!
/Niclas

Medlem sedan aug. 20039 340 inlägg
#2

Re: Kolla 2 fält beroende på den 3:dje?

Skriptet förutsätter att formen har name="form" och at dina element heter falt1, falt2 och falt3.

<script type="text/javascript">
function kollaForm(){
   var validates = true;
   if (document.form.falt3.value=="no"){
      if (document.form.falt1.value.length == 0 || document.form.falt2.value.length == 0){
         alert("Du måste fylla i fälten 1 och 2 eftersom du har svarat no i fält 3.");
         validates = false;
      }
   }
   return validates;
}
</script>
...
<form name="form" onsubmit="return kollaForm();">

Förklara gärna detta lite närmare om jag har missat vad du menar...

LesPaul skrev:

Kan man göra det enligt samma konstruktion så jag kan lägga det i JS-Headern skulle det vara bra.

Om falt3 är en ja/nej-fråga kanske du borde ha en radiobox för den istället?

Medlem sedan apr. 200449 inlägg
#3

Tack för hjälpen.
Men jag har fler fält, som skall kollas av innan det avslutas. Om jag kör ditt script så bryr den sig inte om vad som står efter utan formuläret postas ändå. Se exempel nedan:

// Här kollas fältet av
if (document._w.pubName.value == "")
{
alert("Du måste ange en kontaktperson.");
return false
}

// Här kontrolleras fältet epost så att det innehåller tecknet @.
if (document._w.pubEmail.value == "" ||
document._w.pubEmail.value.indexOf('@', 0) == -1)
{
alert("Du måste ange en giltig e-postadress.");
return false;
}

// Här kollas fältet av
if (document._w.pubUpplaga.value == "")
{
alert("Du måste ange ett värde.");
return false
}

// Koll av flera fält samtidigt.
var validates = true;
if (document._w.pubFormat3.value=="no"){
if (document._w.pubFormat1.value.length == 0 || document._w.pubFormat2.value.length == 0){
alert("Du måste fylla i fälten 1 och 2 eftersom du har svarat no i fält 3.");
validates = false;
}
}
return validates;
}

// Här kollas fältet av
if (document._w.pubOmfang1.value == "")
{
alert("Du måste ange antal sidor.");
return false
}

}

Medlem sedan aug. 20039 340 inlägg
#4
// Koll av flera fält samtidigt.
var validates = true;
if (document._w.pubFormat3.value=="no"){
if (document._w.pubFormat1.value.length == 0 || document._w.pubFormat2.value.length == 0){
alert("Du måste fylla i fälten 1 och 2 eftersom du har svarat no i fält 3.");
return false;
}
}

}
Medlem sedan apr. 200449 inlägg
#5

Tack så jättemycket.
Hmm...det ser enkelt och logiskt ut nu när jag ser det.

//Niclas

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)