webForumDet fria alternativet

radio-problem

2 svar · 266 visningar · startad av soocks

soocksMedlem sedan feb. 200240 inlägg
#1

hej. har ett litet problem med min funktion för formulärkontroll. har sökt efter svar, men inte hittat något.

function checkit(type) {
	
	
	if(type == "cart") {
				
		if(document.forms[0].costumertype.value != "business") {
		
			if (document.forms[0].name.value == "") {
				alert("Ange förnamn.");
				document.forms[0].name.focus();
				return false;
			 }
					  
			if (document.forms[0].surname.value == "") {
				alert("Ange efternummer.");
				document.forms[0].surname.focus();
				return false;
			 }	
			 
		} else {
		
			if (document.forms[0].business.value == "") {
				alert("Ange företag.");
				document.forms[0].business.focus();
				return false;
			 }	
		 
		}
		
		if (document.forms[0].street.value == "") {
			alert("Ange gatuadress.");
			document.forms[0].street.focus();
			return false;
		}	
		
		if (document.forms[0].zipcode.value == "") {
			alert("Ange postnummer.");
			document.forms[0].zipcode.focus();
			return false;
		}	
		
		if (document.forms[0].city.value == "") {
			alert("Ange postort.");
			document.forms[0].city.focus();
			return false;
		 }		  	
		 
		 if (document.forms[0].phone.value == "") {
			alert("Ange telefonnummer.");
			document.forms[0].phone.focus();
			return false;
		 }		
		  if (document.forms[0].email.value == "") {
			alert("Ange korrekt e-post.");
			document.forms[0].email.focus();
			return false;
		 }	
		 
		 
		if (document.forms[0].email.value.length > 0) {
			if ((document.forms[0].email.value.length < 5) || (document.forms[0].email.value.indexOf("'", 0) > -1) || (document.forms[0].email.value.indexOf('"', 0) > -1) || (document.forms[0].email.value.indexOf('.', 0) == -1) || (document.forms[0].email.value.indexOf('@', 0) == -1) || (document.forms[0].email.value.indexOf(" ") > 0)) {
				alert("Ange korrekt e-post.");
				document.forms[0].email.focus();
				return false;
			}
	  	}
		
		[B]
		var stuff = document.forms[0].elements.length;		
		var checked = 0;
		for(var i = 0; i <= stuff; ++i) {			
			if(document.forms[0].elements[i].type == "radio" && document.forms[0].elements[i].checked) {				
				checked++;					
			} 
		}	
		
		if(checked == 0) {
			alert("Välj leverans.");
			return false;
		}		
		
		
[/B]

	} else if(type == "dealer") {

		// inget här ännu	
	
	}
	
	
	return true;	
	
}

gör funktionen för två olika formulär, men har bara kodat för det första ännu.. (vet att email-kontrollen är aningens osmidig, en alternativ lösning är på g ;)

det är den sista biten som krånglar. scriptet tar ut antalet element i formuläret och kollar vilka radio-knappar som är markerade och sparar detta i checked. är denna noll när alla element är kollade ska ett felmeddelande komma upp.. vilket det inte gör.

scriptet verkar hoppa över if-satsen som kollar om checked == 0 och slutför submittandet av formuläret.

jag är ingen mästare i javascript, så jag kanske har missat något fatalt vad gäller retrun true/false..

tack på förhand!

jawbreakerMedlem sedan jan. 2003294 inlägg
#2

Din for-loop borde stega ut utanför sista indexet, så du får nog javascriptfel precis innan alerten.

Testa följande:

for ( var i = 0; i < stuff; i++ )
soocksMedlem sedan feb. 200240 inlägg
#3

se där, visste att det var något enkelt :) tackar och bockar!

129 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
125 ms — hämta tråd, inlägg och bilagor (db)