Just nu i M3-nätverket
Jump to content

Addera värden från flera olika input fält


pushloop

Recommended Posts

Har ett akut problem med ett script som en bekant slängde ihop, som inte fungerar i Safari. Det ser ju helt klart ut som om man skulle kunna effektivisera scriptet en del, och vore tacksam om någon kunde göra detta.

 

500 spänn till den som fixar detta!

 

function startCalc(){
 interval = setInterval("calc()",1);
}
function calc() {

resepris = "";
len = document.getElementById("freeform").resepris.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").resepris[i].checked) {
     resepris = document.getElementById("freeform").resepris[i].value;
   }
 }

title_resepris = "";
len = document.getElementById("freeform").resepris.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").resepris[i].checked) {
     title_resepris = document.getElementById("freeform").resepris[i].title;
   }
 }

cancellation = "";
len = document.getElementById("freeform").cancellation.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").cancellation[i].checked) {
     cancellation = document.getElementById("freeform").cancellation[i].value;
   }
 }


pryl1 = "0";
len = document.getElementById("freeform").pryl1.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl1[i].checked) {
     pryl1 = document.getElementById("freeform").pryl1[i].value;
   }
 }
title_pryl1 = "";
len = document.getElementById("freeform").pryl1.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl1[i].checked) {
     title_pryl1 = document.getElementById("freeform").pryl1[i].title;
   }
 }

pryl2 = "0";
len = document.getElementById("freeform").pryl2.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl2[i].checked) {
     pryl2 = document.getElementById("freeform").pryl2[i].value;
   }
 }
title_pryl2 = "";
len = document.getElementById("freeform").pryl2.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl2[i].checked) {
     title_pryl2 = document.getElementById("freeform").pryl2[i].title;
   }
 }

pryl3 = "0";
len = document.getElementById("freeform").pryl3.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl3[i].checked) {
     pryl3 = document.getElementById("freeform").pryl3[i].value;
   }
 }
title_pryl3 = "";
len = document.getElementById("freeform").pryl3.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl3[i].checked) {
     title_pryl3 = document.getElementById("freeform").pryl3[i].title;
   }
 }

pryl4 = "0";
len = document.getElementById("freeform").pryl4.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl4[i].checked) {
     pryl4 = document.getElementById("freeform").pryl4[i].value;
   }
 }
title_pryl4 = "";
len = document.getElementById("freeform").pryl4.length;

 for (i = 0; i <len; i++) {
   if (document.getElementById("freeform").pryl4[i].checked) {
     title_pryl4 = document.getElementById("freeform").pryl4[i].title;
   }
 }


 value1 = Number(resepris);
 value2 = Number(cancellation);
 value3 = 0;
 value4 = Number(pryl1);
 value5 = Number(pryl2);
 value6 = Number(pryl3);
 value7 = Number(pryl4);
 value8 = (1500 * 1);
 document.getElementById("freeform").summa.value = ((value1 * 1) + (value2 * 1) + (value3 * 1) + (value4 * 1) + (value5 * 1) + (value6 * 1) + (value7 * 1));
 document.getElementById("freeform").summa_fake.value = ((value1 * 1) + (value2 * 1) + (value3 * 1) + (value4 * 1) + (value5 * 1) + (value6 * 1) + (value7 * 1));
 document.getElementById("freeform").summa_resterande.value = (((value1 * 1) + (value2 * 1) + (value3 * 1) + (value4 * 1) + (value5 * 1) + (value6 * 1) + (value7 * 1)) - (value8 * 1));
 document.getElementById("freeform").resa.value = title_resepris;

 document.getElementById("freeform").extra_pryl1.value = title_pryl1;
 document.getElementById("freeform").extra_pryl2.value = title_pryl2;
 document.getElementById("freeform").extra_pryl3.value = title_pryl3;
 document.getElementById("freeform").extra_pryl4.value = title_pryl4;

}
function stopCalc(){
 clearInterval(interval);
}

 

 

Link to comment
Share on other sites

Orkade inte kolla hela scriptet men vad är det som inte fungerar.

Har dock inte tid just nu att kolla mer på det men kanske senare eller efter helgen...

 

Link to comment
Share on other sites

Det är lite komplicerat, men själva formuläret har 2 olika input fält som båda skall innehålla summan, ett som är inaktivt (så att användaren inte kan ändra det), och ett som är dolt, som är det som faktiskt skickas.

 

Vidare skall varje fälts titel hämtas och även de läggas in i dolda fält. Men det är ett mindre problem...

 

I Firefox och IE7 fungerar det fint, och summan hamnar i båda dessa fält, men Safari visar inget alls i endera fälten.

 

Det är möjligt att det är på html-sidan det är fel, men jag tror mer på scriptet. I vilket fall skulle scriptet behöva effektiviseras.

Det är dock akut, så hinner du eller någon annan kolla på det idag eller imorgon vore det grymt!

 

 

/A

 

[inlägget ändrat 2008-10-02 11:14:31 av pushloop]

Link to comment
Share on other sites

I vilket fall skulle scriptet behöva effektiviseras.
Utan att se ditt formulär så är det lite svårt att se i detalj vilka element som ingår men jag förmodar att det är radioknappar...

I vilket fall som helst så hade jag byggt upp scriptet med i stort sett en if-sats där man loopar igenom en array med dem olika "gruppnamnen".

Sen bygger man upp dem olika variblerna(ev en ny array) med dem olika värdena med undantag för cancellation där du inte vill ha titelvärdet.

 

Dem fasta värdena är ju vad dem är, jag hade dock namnsatt variablerna bättre så det framgår vad dem innehåller.

 

Men Nu är det helg!

 

Jag fick lite tid över nu på eftermiddagen så jag gjorde ett ex taget i "luften" som kanske kan ge dig lite idéer(om intresse finns, annars kanske andra kan ha nytta av scriptet) om hur du kan utveckla Ditt script.

Vad dem fasta värdena är för något vet bara du, därav varaibelnamnen på dem i mitt ex.

Summan är uträknad direkt i funktionen, går att ändra såklart.

[log]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="sv" xml:lang="sv">
<head>
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Language" content="sv" />
<script type="text/javascript">
var arrRadios=new Array("resepris","cancellation","pryl1","pryl2","pryl3","pryl4");
var arrTitles=new Array();
var summa;
var intervalCalc;

function StartCalc() {
intervalCalc=setInterval("Calc()",1000);
}

function Calc() {
arrValues=[];
arrTitles=[];
var summa=0;
var nCounter=0;
for(i in arrRadios) {
	var arrGroup=document.getElementsByName(arrRadios[i]);
	for(n=0;n<arrGroup.length;n++){
		if(arrGroup[n].checked) {
			summa+=parseInt(arrGroup[n].value);
			if(arrRadios[i]!="cancellation") arrTitles.push(arrGroup[n].title);
			nCounter++;
		}
	}
}
if(nCounter==arrRadios.length)
	return Summera(summa);
}

function Summera(summa) {
var intValue1=(1500*1);
var intValue2=0;


document.getElementById("summa").value=summa+intValue2;
document.getElementById("summa_fake").value=summa+intValue2;
document.getElementById("summa_resterande").value=summa-intValue1;
document.getElementById("resetitle").value=arrTitles[0];
for(i=1;i<arrTitles.length;i++) {
	document.getElementById("xpryl"+i).value=arrTitles[i];
}
}

function StopCalc() {
clearInterval(intervalCalc);
}
</script>
<title>Untitled</title>
</head>

<body>
<input type="Radio" name="resepris" value="1" title="1_rese" />resepris 1<br />
<input type="Radio" name="resepris" value="2" title="2_rese" />resepris 2<br />
<input type="Radio" name="cancellation" value="1" title="1_cancellation" />cancellation 1<br />
<input type="Radio" name="cancellation" value="2" title="2_cancellation" />cancellation 2<br />
<input type="Radio" name="pryl1" value="1" title="pryl_1_1" />Pryl 1 1<br />
<input type="Radio" name="pryl1" value="2" title="pryl_1_2" />Pryl 1 2<br />
<input type="Radio" name="pryl2" value="1" title="pryl_2_1" />Pryl 2 1<br />
<input type="Radio" name="pryl2" value="2" title="pryl_2_2" />Pryl 2 2<br />
<input type="Radio" name="pryl3" value="1" title="pryl_3_1" />Pryl 3 1<br />
<input type="Radio" name="pryl3" value="2" title="pryl_3_2" />Pryl 3 2<br />
<input type="Radio" name="pryl4" value="1" title="pryl_4_1" />Pryl 4 1<br />
<input type="Radio" name="pryl4" value="2" title="pryl_4_2" />Pryl 4 2<br /><br />
<input type="Text" id="summa" value="Summa" /><br />
<input type="Text" id="summa_fake" value="Summa fake" /><br />
<input type="Text" id="summa_resterande" value="Summa rest" /><br />
<input type="Text" id="resetitle" value="Restitel" /><br />
<input type="Text" id="xpryl1" value="Pryl 1" /><br />
<input type="Text" id="xpryl2" value="Pryl 2" /><br />
<input type="Text" id="xpryl3" value="Pryl 3" /><br />
<input type="Text" id="xpryl4" value="Pryl 4" /><br /><br />
<input type="Button" value="Start Calc" onclick="StartCalc();" />  <input type="Button" value="Stop Calc" onclick="StopCalc();" />

</body>
</html>

[/log]

[inlägget ändrat 2008-10-04 17:17:00 av Micke_skane]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...