UrMe Medlem sedan apr. 2001 762 inlägg Frågan 15 juni 2007 07:46 #1 Hur kollar jag om någon av dessa är i kryssad på smidigaste sättet:
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">
<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">
Har försökt med något sånt här, men det funkar inge vidare:
function checkform()
{
if(eval("document.f1003.a1[city][0].checked") == false)
{
alert("Du valde inget!");
return false;
}
document.f1003.submit();
}
@nders Medlem sedan juni 2000 32 967 inlägg UrMe Medlem sedan apr. 2001 762 inlägg Men jag verkar inte ens komma åt värdet..
t.ex om jag kör så här:
alert(document.f1003.a1);
Så får jag undefined, om jag lägger till:
alert(document.f1003.a1[city]); eller alert(document.f1003.a1[city][0]);
så händer inget utan den går bara vidare.
@nders Medlem sedan juni 2000 32 967 inlägg Det är inte så konstigt att inte alert(document.f1003.a1); fungerar, dina radioknappar heter a1[city] . Varför heter de det förresten?
Det är inte så konstigt att inte alert(document.f1003.a1[city]); fungerar, man måste alltid ange vilken av radioknapparna man vill ha.
Det är inte så konstigt att inte document.f1003.a1[city][0]); fungerar, eftersom du inte kan göra alert() på ett radioknappsobjekt. Välj en egenskap, till exempel checked eller value .
Kanske kan funka:
alert(document.f1003.['a1[city]'][0].checked);
Det känns också som att det är att be om problem att ha hakparenteser i namnet på sina checkboxar, eftersom hakparenteser används rätt mycket i javascript... Om jag var du skulle jag byta bort dem, så skulle allt bli så mycket sötare och mindre kladdigt.
Gick det inte att använda Jojoxx exempel till något?
C colione Medlem sedan juni 2001 4 421 inlägg Iom att du har med brackets så tolkas a1 som en array, vilket är fel.
Då får lösa det nåt sånt här istället:
<form name="f1003">
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">
<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">
</form>
<input type="button" onclick="alert(foo('a1[city]'))">
<script>
function foo(n) {
f=document.f1003
es=f.elements
for (i=0;i<es.length;i++) {
e=es[i]
if (!e.getAttribute("name")==n)
continue;
if (e.checked)
return e.value;
}
return false;
}
</script>
UrMe Medlem sedan apr. 2001 762 inlägg alert(document.f1003.['a1[city]'][0].checked);
fungerade inte heller
Varför jag använder a1[city], a1[country] etc (har 16st sådana där totalt) är för att jag kan lätt plocka upp arrayen i php på nästa sida. Istället för att ha 16 olika variabler. Kanske finns nåt annat sätt att göra det på?
Ska testa Coliones funktion.
UrMe Medlem sedan apr. 2001 762 inlägg Har kommit så här långt, fungerar ju bra om man bara har en variabel:
function checkform() {
foo('a1[city]');
return false;
}
function foo(n) {
f=document.f1003;
es=f.elements;
rchecked = 0;
for (i=0;i<es.length;i++) {
e=es[i];
alert(e.getAttribute("name"));
if (!e.getAttribute("name")==n) {
continue;
}
if (e.checked) {
rchecked = 1;
}
}
if(rchecked == 1) {
document.f1003.submit();
} else {
alert("Du har glömt att välja ett alternativ");
return false;
}
}
Frågan är hur jag på bästa sätt kan köra igenom alla variabler och kolla om de inte är checked innan jag skriver ut felmeddelandet/skickar formuläret.
Borde kanske läsa lite mer javascript känns det som
C colione Medlem sedan juni 2001 4 421 inlägg <form name="f1003" onsubmit="return checkform()">
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">
<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">
<input type="submit">
</form>
<script>
function checkform(){
if(foo('a1[city]') && foo('a1[country]'))
return true;
alert("Du har glömt att välja ett alternativ");
return false;
}
function foo(n) {
f=document.f1003
es=f.elements
for (i=0;i<es.length;i++) {
e=es[i]
if (e.getAttribute("name")==n && e.checked)
return e.value; //Om du inte är intresserad av själva värdet, utan bara om en är ifylld, kan du egentligena använda: return true;
}
return false;
}
</script>
UrMe Medlem sedan apr. 2001 762 inlägg Tackar och bockar! Det där fungerar precis som jag vill.
Nu hann colione före, men jag postar min lösning ändå, eftersom den angriper problemet på ett lite annorlunda sätt.
<script type="text/javascript">
function checkem(){
var basename='a1';
var groupnames=['city', 'country'];
for (var i=0; i<groupnames.length; i++){
var isChecked=false,
gels=document.getElementsByName(basename+'['+groupnames[i]+']');
for (var j=0; j<gels.length; j++)
if(gels[j].checked){
isChecked=true;
break;
}
if (!isChecked)
return false;
}
return true;
}
</script>
<form>
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">
<br />
<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">
<input type="button" onclick="alert(checkem());">
</form>