Hur skulle jag skriva en funktion som undersöker följande:
- En radioknapp med id "homeDel" är intryckt
- En radioknapp med namn "delAddress" inte är intryckt
och sedan
- Ifall följande två stämmer: tryck dit klassen "not chosen" på ett element med id="homeDelMenu".
Scriptet ska sitta på en submit-knapp så det behövs även returneras false (antar jag) för att inte genomföra knappens funktioner på serversidan.
Det blev lite för mycket för mina JS-kunskaper :).
colioneMedlem sedan juni 20014 421 inlägg Är du säker på att du vill använda radioknappar och inte checkboxar?
Skälet till min fråga är att radioknappar grupperas på name-egenskapen. Har du bara en radio-knapp så är det bättre att ersätta den med en checkbox.
Det fungerar inte med checkboxar. Strukturen ser ut så här:
1a 1b
/ | \
2a 2b 2c
Det går alltså inte att välja någon radiobutton om dess förälder inte är vald.
colioneMedlem sedan juni 20014 421 inlägg Nåt sådant?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>untitled</title>
<style>
.not_chosen{
font-weight:bold;
}
</style>
<script>
function validation(that) {
var inps=that.getElementsByTagName('input')
var delChecked=true
if (document.getElementById('homeDel').checked) {
delChecked=false
for (i=0;i<inps.length;i++) {
inp=inps[i]
if (!delChecked && inp.name==="delAddress") {
if (!inp.checked) continue;
delChecked=true;
break;
}
}
}
if (!delChecked) {
document.getElementById('homeDelMenu').className="not_chosen"
}
return delChecked;
}
</script>
</head>
<body>
<form name="foo" onSubmit="return validation(this)">
<input type="radio" id="homeDel" name="homeDel" value="1">Hemleverans
<br />
<input type="radio" id="delAddress" name="delAddress" value="0">Leverans adress
<input type="radio" id="delAddress2" name="delAddress" value="1">Leverans adress
<input type="radio" id="delAddress3" name="delAddress" value="2">Leverans adress
<input type="submit" value="skicka">
</form>
<p id="homeDelMenu">
test
</p>
</body>
</html>
Eller är jag helt ute och cyklar?
Nu är jag jobbig igen, hur skulle det se ut, utbrutet från html? :) Funktionen är precis den jag vill åt!
colioneMedlem sedan juni 20014 421 inlägg function validation(that) {
var inps=that.getElementsByTagName('input')
var delChecked=true
if (document.getElementById('homeDel').checked) {
delChecked=false
for (i=0;i<inps.length;i++) {
inp=inps[i]
if (!delChecked && inp.name==="delAddress") {
if (!inp.checked) continue;
delChecked=true;
break;
}
}
}
if (!delChecked) {
document.getElementById('homeDelMenu').className="not_chosen"
}
return delChecked;
}
du aropar det genom att ha följande i form-taggen: onsubmit="return validate(this)"
du får inte ha mellanslag i classnamnet. vilken klass det ska bli sätter du i:
document.getElementById('homeDelMenu').className="klass-namn"
Att tänka på att funktionen just nu är skriven för att endast kolla av radio-knappar som ligger i den <form> som har onsubmit i sig.