---
title: "Kod som krockar?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/88459-kod-som-krockar"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Asa"
published: "2003-10-14T12:04:22.000Z"
updated: "2003-10-14T19:10:23.000Z"
replies: 20
views: 642
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/88459-kod-som-krockar"
---

# Kod som krockar?

_Sida 1 av 2._

## #1 — Asa, 2003-10-14T12:04Z

Har denna valideringskoden men det fetstilta i koden verkar "krocka me varann" på nåt sätt!

```
function checkboxcheck(obj,name){
	var nn=0;
	for(var n=0;n<obj.length;n++){
		nn+=(obj[n].type=="checkbox"&&obj[n].checked&&(!name||name==obj[n].name))?1:0;
	}
	return(nn);
}

function UpdateRest(){ 
        [b]var elm = document.forms["form"].elements;[/b]

	if (document.form.namn.value==""){
		alert("Du glömde restaurangens namn!");
		return false;
	} else if (document.form.adress.value==""){
		alert("Du glömde skriva restaurangens adress!");
		return false;
	} else if (document.form.husnr.value==""){
		alert("Du glömde skriva restaurangens husnr!");
		return false;
	} else if (document.form.tel.value==""){
		alert("Du glömde skriva restaurangens telefonnummer!");
		return false;
	[b]} else if (!document.form.[url]www.value==[/url]""){
 		if (!/^http:\/\//.test(elm["www"].value)) {
			alert("Hemsideadressen måste börja med [url]http://[/url]");
			return false;
		}[/b]
	} else if (document.form.postnr.value==""){
		alert("Du glömde skriva restaurangens postnr!");
		return false;
	} else if (document.form.ort.value==""){
		alert("Du glömde skriva restaurangens ort!");
		return false;
	[b]} else if (checkboxcheck(document.forms["form"],"kID") > 2){
		alert("Du får max markera 2 kategorier.");
		return false;[/b]
	}
}
```

Tar jag bort de två översta fetstilta ställena funkar det.

Permalänk: https://www.webforum.nu/p/88459

## #2 — nitro2k01, 2003-10-14T13:35Z

Varför kontrollera längden när det felet ändå upptäcks i och med kontrollen av huruvida <http://> inleder denna. Längdkollen gjorde att if/else-loopen lämnades för tidigt i vissa fall. Jag rekommenderar följande kod (notera att även felmeddelandet ändrats!)

```
 
function checkboxcheck(obj,name){
	var nn=0;
	for(var n=0;n<obj.length;n++){
		nn+=(obj[n].type=="checkbox"&&obj[n].checked&&(!name||name==obj[n].name))?1:0;
	}
	return(nn);
}

function UpdateRest(){ 
        var elm = document.forms["form"].elements;

	if (document.form.namn.value==""){
		alert("Du glömde restaurangens namn!");
		return false;
	} else if (document.form.adress.value==""){
		alert("Du glömde skriva restaurangens adress!");
		return false;
	} else if (document.form.husnr.value==""){
		alert("Du glömde skriva restaurangens husnr!");
		return false;
	} else if (document.form.tel.value==""){
		alert("Du glömde skriva restaurangens telefonnummer!");
		return false;
	} else if (!/^http:\/\//.test(elm["www"].value)) {
		alert("Hemsideadressen måste fyllas i samt börja med [url]http://[/url]");
		return false;
	} else if (document.form.postnr.value==""){
		alert("Du glömde skriva restaurangens postnr!");
		return false;
	} else if (document.form.ort.value==""){
		alert("Du glömde skriva restaurangens ort!");
		return false;
	} else if (checkboxcheck(document.forms["form"],"kID") > 2){
		alert("Du får max markera 2 kategorier.");
		return false;
	}
	// Tag bort nästa rad. Den finns där endast i testsyften
	alert("ok");
}
```

Permalänk: https://www.webforum.nu/p/1186681

## #3 — Asa, 2003-10-14T13:37Z

Hemsideadress måste ej fyllas i! OM den fylls i måste det börja med <http://>

Permalänk: https://www.webforum.nu/p/1186684

## #4 — nitro2k01, 2003-10-14T13:43Z

Då ska den kollen inte finnas i else if-kedjan för att undvika att lämna kollen för tidigt. Kod som följer:

```
 
function checkboxcheck(obj,name){
	var nn=0;
	for(var n=0;n<obj.length;n++){
		nn+=(obj[n].type=="checkbox"&&obj[n].checked&&(!name||name==obj[n].name))?1:0;
	}
	return(nn);
}

function UpdateRest(){ 
        var elm = document.forms["form"].elements;

	if (document.form.namn.value==""){
		alert("Du glömde restaurangens namn!");
		return false;
	} else if (document.form.adress.value==""){
		alert("Du glömde skriva restaurangens adress!");
		return false;
	} else if (document.form.husnr.value==""){
		alert("Du glömde skriva restaurangens husnr!");
		return false;
	} else if (document.form.tel.value==""){
		alert("Du glömde skriva restaurangens telefonnummer!");
		return false;
	} else if (document.form.postnr.value==""){
		alert("Du glömde skriva restaurangens postnr!");
		return false;
	} else if (document.form.ort.value==""){
		alert("Du glömde skriva restaurangens ort!");
		return false;
	} else if (checkboxcheck(document.forms["form"],"kID") > 2){
		alert("Du får max markera 2 kategorier.");
		return false;
	}
	if (!document.form.[url]www.value==[/url]"" && !/^http:\/\//.test(elm["www"].value)) {
		alert("Hemsideadressen måste börja med [url]http://[/url]");
		return false;
	}

	// Tag bort nästa rad. Den finns där endast i testsyften
	alert("ok");
}
```

Permalänk: https://www.webforum.nu/p/1186692

## #5 — Jojoxx, 2003-10-14T13:50Z

Asa, du har inget annat (html)-fel på sidan? Jag provade din kod och den verkar fungera ok ([ditt exempel](http://www.jojoxx.net/wf/86553.html)).

Hurvida du returnerar false som i ditt exempel eller nitro's spelar ingen roll. Det blir inte mer false bara för att det är fler saker som är fel :) Det man skulle kunna göra är att summera alla saker som är fel istället för att returnera false så fort man hittar något. På så vis kan man tala om för användaren alla saker som inte stämmer istället för att bara rapportera ett och ett.

Permalänk: https://www.webforum.nu/p/1186704

## #6 — nitro2k01, 2003-10-14T13:57Z

Nja jojoxx, koden orsakar inga körfel, om formens element finns. Däremot orsakar koden(den ursprungliga) ett logiskt fel, nämligen att den inte upptäcker inte skrivit i postnr, ort eller om denne markerat fler än 2 kategorier (**Dock bara om användaren skrivit in en korrekt www**). Men för att jag är så snäll :) så har jag skrivit i ordning en kod som kollar varje element för sig.

```
 
function UpdateRest(){ 
        var elm = document.forms["form"].elements;
	var errNums = 0;
	var errors = "Följande fel upptäcktes: \n\n";
	if (document.form.namn.value==""){
		errors += "Du glömde restaurangens namn!" + "\n";
		errNums ++;
	} 
	if (document.form.adress.value==""){
		errors += "Du glömde skriva restaurangens adress!" + "\n";
		errNums ++;
	} 
	if (document.form.husnr.value==""){
		errors += "Du glömde skriva restaurangens husnr!" + "\n";
		errNums ++;
	}
	if (document.form.tel.value==""){
		errors += "Du glömde skriva restaurangens telefonnummer!" + "\n";
		errNums ++;
	} 
	if (document.form.postnr.value==""){
		errors += "Du glömde skriva restaurangens postnr!" + "\n";
		errNums ++;
	} 
	if (document.form.ort.value==""){
		errors += "Du glömde skriva restaurangens ort!" + "\n";
		errNums ++;
	} 
	if (checkboxcheck(document.forms["form"],"kID") > 2){
		errors += "Du får max markera 2 kategorier." + "\n";
		errNums ++;
	}
	if (!document.form.[url]www.value==[/url]"" && (!/^http:\/\//.test(elm["www"].value))) {
		errors += "Hemsideadressen måste börja med [url]http://[/url]" + "\n";
		errNums ++;
	}

	if (errNums > 0)
		alert (errors);
		return false;
	else
		// Tag bort nästa rad. Den finns där endast i testsyften
		alert("ok");

}
```

Permalänk: https://www.webforum.nu/p/1186710

## #7 — Jojoxx, 2003-10-14T14:02Z

> Däremot orsakar koden(den ursprungliga) ett logiskt fel

Har Asa redigerat [sitt inlägg](http://www.webforum.nu/showthread.php?s=&postid=732457#post732457) eller syftar du på något annat? Denna kodsnutt släpper inte igenom ett icke ifyllt postnummerfält.

Permalänk: https://www.webforum.nu/p/1186716

## #8 — Asa, 2003-10-14T14:04Z

> **Jojoxx skrev:**
>
> Asa, du har inget annat (html)-fel på sidan? Jag provade din kod och den verkar fungera ok ([ditt exempel](http://www.jojoxx.net/wf/86553.html)).
> 
> Hurvida du returnerar false som i ditt exempel eller nitro's spelar ingen roll. Det blir inte mer false bara för att det är fler saker som är fel :) Det man skulle kunna göra är att summera alla saker som är fel istället för att returnera false så fort man hittar något. På så vis kan man tala om för användaren alla saker som inte stämmer istället för att bara rapportera ett och ett.

I det exemplet finns ju inte checkboxarna med. Det ska finnas flera såna och 2 får max fyllas i. De heter lika med olika värden.

Permalänk: https://www.webforum.nu/p/1186717

## #9 — Jojoxx, 2003-10-14T14:06Z

Ja ursäkta. De hade jag missat. Men det fungerar fortfarande bra.

Permalänk: https://www.webforum.nu/p/1186720

## #10 — Asa, 2003-10-14T14:10Z

Hmm, nu blir jag fundersam! Ska kolla lite mer i min kod och återkommer. Förmodligen blir det ikväll för jag ska iväg nu.

Permalänk: https://www.webforum.nu/p/1186723

## #11 — nitro2k01, 2003-10-14T14:10Z

> **Jojoxx skrev:**
>
> > Däremot orsakar koden(den ursprungliga) ett logiskt fel
>
> 
> Har Asa redigerat [sitt inlägg](http://www.webforum.nu/showthread.php?s=&postid=732457#post732457) eller syftar du på något annat? Denna kodsnutt släpper inte igenom ett icke ifyllt postnummerfält.

 Nej däremot har jag redigerat mitt inlägg... Jag glömde nämligen att nämna detta först: **Den släpper bara igenom postnr och ort om url-en är korrekt ifylld.** (Pröva det!). Om man fyller i en felaktig url eller lämnar den tom fungerar koden som man förväntar sig, men som sagt inte om url är korrekt ifylld.

Permalänk: https://www.webforum.nu/p/1186726

## #12 — Jojoxx, 2003-10-14T14:30Z

Ahh, det hade jag inte testat. Mitt fel.

Permalänk: https://www.webforum.nu/p/1186755

## #13 — nitro2k01, 2003-10-14T14:32Z

> **Jojoxx skrev:**
>
> Ahh, det hade jag inte testat. Mitt fel.

Man måste testa allt om man ska bli av med buggarna :)

Permalänk: https://www.webforum.nu/p/1186756

## #14 — Jesper T, 2003-10-14T14:36Z

Du använder förmodligen ASP på sidan du tar emot formuläret?!

Tips: Låt de få skriva "som de vill" i formuläret (www) och plocka bort "http://" ur strängen, så kan du enkelt sätta dit det igen innan du lägger till adressen. Eller tänker jag fel?

```
replace(request.form("www"),"http://","")
```

Permalänk: https://www.webforum.nu/p/1186762

## #15 — Jojoxx, 2003-10-14T17:02Z

Nej, det är nog en bra idé. Ingen större risk att någon använder något annat protokoll än http :)

Permalänk: https://www.webforum.nu/p/1186881

## #16 — Asa, 2003-10-14T18:31Z

Bestäm er! Vad ska jag göra nu när inte jag får igång det. Kanske jag kan skicka databas å formulär här så kan ni ladda ner å ändra å sen ladda upp?

Permalänk: https://www.webforum.nu/p/1186932

## #17 — Asa, 2003-10-14T18:41Z

Om jag lämnar www tomt säger den till om kategorierna men inte om jag fyller i det.

Permalänk: https://www.webforum.nu/p/1186942

## #18 — Asa, 2003-10-14T18:43Z

Hmm, hade ju glömt en grej! Tror det funkar nu! Men jag kollade ju det förrut att det var rätt.....

Funkade...

Permalänk: https://www.webforum.nu/p/1186945

## #19 — dectgap, 2003-10-14T18:51Z

> **Asa skrev:**
>
> Bestäm er!

Det är bra att du är bestämd!
Varför nöja sig med att folk hjälper dig och diskuterar bästa sätt att lösa ditt problem?

Permalänk: https://www.webforum.nu/p/1186953

## #20 — Jojoxx, 2003-10-14T19:08Z

Du kan ta vilket du vill, antingen [ditt exempel som jag modifierat](http://www.jojoxx.net/wf/86553.html) eller [Nitros](http://www.webforum.nu/showthread.php?s=&postid=732538#post732538) exempel. Båda fungerar. Beträffande [Jespers tips](http://www.webforum.nu/showthread.php?s=&postid=732596#post732596) så kan du ta det eller inte (det är ett bra tips).

Permalänk: https://www.webforum.nu/p/1186970

---

Tråden på webben: https://www.webforum.nu/amne/javascript/88459-kod-som-krockar  
Nästa sida: https://www.webforum.nu/amne/javascript/88459-kod-som-krockar/page2.md
