UrMeMedlem sedan apr. 2001797 inlägg
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();
}
@ndersMedlem sedan juni 200026 914 inlägg
UrMeMedlem sedan apr. 2001797 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.
@ndersMedlem sedan juni 200026 914 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?
colioneMedlem sedan juni 20013 386 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>
UrMeMedlem sedan apr. 2001797 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.
UrMeMedlem sedan apr. 2001797 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 :)
colioneMedlem sedan juni 20013 386 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>
UrMeMedlem sedan apr. 2001797 inlägg
Tackar och bockar! Det där fungerar precis som jag vill.
nitro2k01Medlem sedan aug. 20037 630 inlägg
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>