webForumDet fria alternativet

"Kolla om en radioknapp är vald"

JavaScriptur Javascript

10 svar · 841 visningar · startad av civilpolisen

Medlem sedan dec. 2009872 inlägg
Frågan#1

"javascript, tutorial, check value"

Sökning...
http://www.google.se/search?hl=sv&client=firefox-a&hs=Zca&rls=org.mozilla%3Asv-SE%3Aofficial&q=javascript%2C+tutorial%2C+check+value&aq=f&aqi=&aql=&oq=&gs_rfai=

***
Problem:
Jag har två radoiknappar som man ska välja, men alla orkar inte välja så jag skulle vilja ha en liten "validate" -funktion som säger "Välj land!!" motsvarande, då man trycker på OKEJ.

( ) Sverige
( ) Norge

Hoppas ni fattar. De exempel jag hittat har inte varit för denna funktion.

Medlem sedan aug. 2008815 inlägg
#2
function check(){
if(!(document.form.sverige.checked && document.form.norge.checked)){
alert("du måste välja ett land");
return false;
} else{
return true;
}
}

html kod:

<form name="form" onsubmit="return check()">
<input type="radio" name="sverige" value="svergie"> Svergie<br>
<input type="radio" name="norge" value="norge"> Norge<br>
<input type="submit">
</form>
Medlem sedan dec. 2009872 inlägg
#3

Ser lovande ut...

Ett problem har dykt upp:

      <FORM NAME="f" onSubmit="return validateForm()"  
onsubmit="return check()" ACTION="confirm.asp" METHOD="post">

Det blir felmeddelande med två onSubmit i samma form-data...
Kan man kolla två saker!? Eller ska jag kolla "den andra" inne i "den första"...!?

Medlem sedan sep. 20051 758 inlägg
#4

Måste du ha båda funktionerna då? I så fall tror jag att den ena funktionen ska anropa den andra.

Annars, räcker det inte med bara en funktion check() enligt ovan (eventuellt att du måste modifiera något) för att det ska bli som du tänkt:

Om man varken bockar i Sverige eller Norge kommer meddelanderutan utan att du kommer till sidan confirm.asp och bockar man i ett land (testa helst med båda) så kommer man till confirm.asp utan meddelanderuta?

Medlem sedan juni 20019 519 inlägg
#5

noshornin's kod verkar mycket märklig, varför göra radio-knappar när det verkar som att man få markera både norge och sverige (name skall vara samma!)

sen onsubmit skall retunera true eller false, vilket check() gör (enligt noshornins exempel) och det bör väl validateForm() också göra.

Du kan bara köra med en onsubmit (eller bind eventet), men om du nu inte vill göra det så har du två altenativ:

1. skapar en funktion till som kör check() + validateForm():

function checkAndValidate() {
return (check() && validateForm());
}

eller kör:

... onsubmit="(check() && validateForm());"..>

Medlem sedan dec. 2009872 inlägg
#6

Tack för svar!!

Det ska vara radio-knappar, det var jag som skrev. Det ska egentligen stå "förfrågan" eller "order", men det är underordnat vad det står... Men kanske lite lättare att förstå sammanhanget.

Det fungerar bra nu. Men när jag klickar på "Skicka" står det "Du måste välja order eller förfrågan" och sen hoppas koden vidare till nästa sida.

Det var ju liksom meningen att koden skulle stanna på den sidan och man skulle välja rätt för att SEN komma till nästa sida...!! :-)

***
onsubmit="(check() && validateForm());"

Denna har jag testat och det funkar, men validateForm tror jag vi kan skippa för jag vet inte riktigt vad den tillför....!?

Medlem sedan juni 20019 519 inlägg
#7

hur ser båda funktionerna nu nu då?

skall vara onsubmit=" return (check() && validateForm());"

Medlem sedan juni 200032 967 inlägg
#8

om du kan skippa validateForm så gör det.

onsubmit="[b]return[/b] check();"
Medlem sedan dec. 2009872 inlägg
#9

Tack, vad ni är snabba!!
Nu fungerar det FÖR bra...!! :-)

function check(){
if(!(document.f.order.checked)){
alert("Du måste välja beställning eller förfrågan!");
return false;
} else{
return true;
}
}

Även om jag markerar ett val blir det felmeddelande, "Du måste välja beställning eller förfrågan"...

 <INPUT TYPE="radio" NAME="order" VALUE="order"> Beställning
 <INPUT TYPE="radio" NAME="order" VALUE="inquiry"> Förfrågan
Medlem sedan juni 20019 519 inlägg
#10

Du få loopa igenom alla dina radio kanppar som heter order:

function check(){
    var order = document.f.order;
    for(var i=0,l=order.length;i<l;i++) {
        if(order[i].checked) {
            return true;
        }
    }
    alert("Du måste välja beställning eller förfrågan!");
    return false;
}
Medlem sedan dec. 2009872 inlägg
#11

OK, funkar nu!

Hade jag aldrig kunnat lista ut själv... Tusen tack!! :-)

136 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)