JompanMedlem sedan juli 200739 inlägg Jag har ett enkelt formulär där beställaren ska ange ett visst antal. ('Förkortat' formulär.)
<form id="Form" action="" method="post" accept-charset="ISO-8859-1" onsubmit="return checkForm();">
<label>Antal biljetter:
<select name="antal">
<option value="">Välj ett alternativ</option>
<option value="1">1 st</option>
<option value="2">2 st</option>
<option value="3">3 st</option>
<option value="4">4 st</option>
</select>
</label>
<p><input type="submit" value="Skicka beställning">
</form>
Hur kan jag i javascript kontrollera att ett val verkligen gjorts innan formuläret skickas iväg?
// Jompan
Nate.AMedlem sedan mars 2006296 inlägg Hej! Det här borde fungera.
function checkForm(){
var form = document.getElementById('Form'),
select = form.getElementsByTagName('select')[0];
if(select.value === '') {
alert('Välj antal biljetter innan du skickar beställningen');
return false;
} else {
return false;
}
}
JompanMedlem sedan juli 200739 inlägg Nej, formuläret går igenom trots att det är ofullständigt (och trots att jag ändrat 'false' nr 2 till 'true'.
// Jompan
JojoxxMedlem sedan juni 20004 308 inlägg <form id="Form" action="" method="post" accept-charset="ISO-8859-1" onsubmit="return checkForm(this);">
<label>Antal biljetter:
<select name="antal">
<option value="">Välj ett alternativ</option>
<option value="1">1 st</option>
<option value="2">2 st</option>
<option value="3">3 st</option>
<option value="4">4 st</option>
</select>
</label>
<p><input type="submit" value="Skicka beställning">
</form>
<script type="text/javascript">
function checkForm(obj){
if(obj.antal.selectedIndex==0){
alert("Du måste välja antal biljetter.");
return false;
} else {
return true;
}
}
</script>
Observera return checkForm(this) Kontrollera även i loggen att du inte har javascript-error på sidan som gör att funktionen aldrig körs.
JompanMedlem sedan juli 200739 inlägg Nja, funkar inte.
Vad menas med parenteskoden (obj)? Ska den definieras?
// Jompan
JojoxxMedlem sedan juni 20004 308 inlägg
Jompan skrev:
Nja, funkar inte.
Jodå, det funkar: http://jsfiddle.net/gCUwe/
Men det var det jag menade med att kolla i loggen. Du har antagligen andra javascript på sidan som genererar fel, och då exekveras aldrig valideringsfunktionen heller.
Jompan skrev:
Vad menas med parenteskoden (obj)? Ska den definieras?
// Jompan
I exemplet skickar jag med formulärsobjektet (med this) till funktionen checkForm, där den tas emot och används med namnet obj. Bara för att slippa använda getElementById för att leta reda på formuläret.