webForumDet fria alternativet

Fattar inte hur man validerar radiobuttons..

JavaScript

21 svar · 752 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1

Har ett formulär med två radiobuttons, båda heter "ligatyp" och har olika värden, formuläret heter skapaliga.

Har kollat runt här och provat diverse script men jag fattar ändå inte hur det ska funka..

Nån som kan hjälpa?

Medlem sedan juli 200519 inlägg
#2

Exakt vad är som skall gälla? Alltså, vilka regler skall de valideras efter?

Medlem sedan jan. 20011 213 inlägg
#3

ska bara kolla så att en utav de två är valda.. man måste alltså välja en

Medlem sedan juli 200519 inlägg
#4

Sätt checked="checked" som attribiut på den ena så kommer den att vara vald från början.

Medlem sedan jan. 20011 213 inlägg
#5

jo, men det garanterar inte att man gör ett aktivt val

Jag vill ha båda tomma från början så att man faktiskt måste välja

Medlem sedan aug. 2002733 inlägg
#6
<input type="radio" name="lag" value="GAIS">
<input type="radio" name="lag" value="IFK">

<input type="submit" value="Skicka" onclick="check();">

...

function check() {
      if(document.[formnamn].lag.value.length==0) {
            alert('Fyll i favoritlag...');
            return false;
      }
}
Medlem sedan juli 200519 inlägg
#7

Med javascript avaktiverat kan man ju dock hoppa över den delen ändå, så det rekommenderas att du även gör en koll på serversidan.

Medlem sedan aug. 2002733 inlägg
#8
If Request.Form("lag") = "" Then
        Response.Write("Gör om - gör rätt!")
End if

ziiiiiiiiiiidaneeeeeeee

Medlem sedan jan. 20011 213 inlägg
#9

Jo, givetvis kollar jag även indata på serversidan också :)

Bättre att visa felmeddelande innan man skickar data tillservern dock..

Testade med:

<input name="ligatyp" type="radio" value="Man">
<input name="ligatyp" type="radio" value="Man2">
if (document.skapaliga.ligatyp.value.length ==0) 
{ 
alert("Du måste välja vilken sorts liga du vill skapa.");
return false;
}

vill dock inte funka, formuläret postas och felet plockas upp av kontrollen på serversidan. Vill ju helst ha en komplett kontroll på klientsidan innan det kontrolleras av serversidan..

Medlem sedan aug. 2002733 inlägg
#10

Har du satt form-name till "skapaliga"?

Sätt i form-taggen:
onsubmit="return check();"

Och ta bort onclick="check();" på submit-knappen.

Medlem sedan jan. 20011 213 inlägg
#11

japp, gjort det med den vill ändå inte

Medlem sedan jan. 20011 213 inlägg
#12
<form name="skapaliga" method="post" action="skapaliga.asp?action=skapalag" onSubmit="return verify()">
<input name="LigansNamn" type="text" id="LigansNamn" size="30" maxlength="30">
<input name="LigansLosenord" type="text" id="LigansLosenord" size="30" maxlength="20">
<input name="ligatyp" type="radio" value="Manager">
<input name="ligatyp" type="radio" value="Coach">
<input name="Submit" type="submit" id="Submit" value="Spara &amp; forts&auml;tt">
</form>
<script language="JavaScript">

<!--
function verify() 
{

if (document.skapaliga.LigansNamn.value == "") 
{ 
alert("Du måste ge din liga ett namn.");
return false;
} 

if (document.skapaliga.LigansLosenord.value == "") 
{ 
alert("Du måste ange ett lösenord för ligan.");
return false;
} 

if (document.skapaliga.ligatyp.value.length ==0) 
{ 
alert("Du måste välja vilken sorts liga du vill skapa.");
return false;
}

}	
// -->		
</SCRIPT>

???
Medlem sedan apr. 20031 660 inlägg
#13

HEJ!

Vet ej vad ni fått fel i koden, delar med mig av det jag använder.

function validera(){
	if (!any_radio(document.getElementsByName('kon'))){
		alert("Fyll i ditt kön.");
		return (false);
	}
	
	document.getElementById('submit').disabled = true;
}

function any_radio(rb){
	for (var i = 0; i < rb.length; i++) {
		if (rb[i].checked) return true;
	}
	return false;
}

Kön
<input type="radio" id="konk" name="kon" value="k" title="Tjej/kvinna" /><label for="konk">&nbsp;Tjej/kvinna</label><br />
<input type="radio" id="konm" name="kon" value="m" title="Kille/man" /><label for="konm">&nbsp;Kille/man</label>
Medlem sedan aug. 2002733 inlägg
#14

...

Varför krångla till det så?

Medlem sedan jan. 20021 122 inlägg
#15

G8: Jag tror inte att det är klokt att kolla med == "", har för mig att default är null eller liknande. Använd egenskapen checked istället.
edit: dvs på formen

...
if(!document.dinform.dinradio.checked)
alert("Välj!");
...
Medlem sedan apr. 20031 660 inlägg
#16

asp skrev:

...

Varför krångla till det så?

Jag? Eller någon annan?

Oavsett vilket har man en kod man är van vid och nöjd med för tillfället.
Att den sedan kanske inte är optimal är en annan sak.
Denna använder jag när jag vill koda korrekt med getElementsByName.

Tidigare använde jag kod med form.fält.egenskap men den är omodern och ersatt av det jag postat.

Medlem sedan aug. 2002733 inlägg
#17

JN >> Räcker det inte att skriva något såhär?

function validera(){
	if (document.getElementsByName('kon').value==''){
		alert("Fyll i ditt kön.");
		return (false);
	}
	
	document.getElementById('submit').disabled = true;
}

Eller är jag helt ute och cyklar?

Medlem sedan jan. 20021 122 inlägg
#18

Du kan inte använda value=='', eftersom värdet inte är satt. Det är alltså inte ens tom sträng, det är null.

Medlem sedan aug. 2002733 inlägg
#19

Okej, detta då?

function validera(){
	if (isNull(document.getElementsByName('kon').value)){
		alert("Fyll i ditt kön.");
		return (false);
	}
	
	document.getElementById('submit').disabled = true;
}
Medlem sedan apr. 20031 660 inlägg
#20

Min funktion function any_radio(rb) som kontrollerar den radiobutton-grupp man önskar kan man säkert redigera bort om man endast har en grupp.
För enkelhetens skull använder jag den dock alltid.

Fast, hur kontrollerar du alla i gruppen; det finns ju flera fält med samma namn?
Eller det räcker att en av alla i gruppen är vald för att uttrycket ska bli sant?

301 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
155 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
154 ms — ändringar (db)