webForumDet fria alternativet

Komplettera fält automatiskt

JavaScript

1 svar · 506 visningar · startad av JAreMANNEN

Medlem sedan aug. 20002 272 inlägg
Frågan#1

Hej,

Har en funktion i javascript jag skulle behöva lite hjälp med.

Har byggt ett webbaserat gränssnitt där man anger olika mått på ett plagg.
För att förenkla och snabba upp processen så finns det önskemål om att när
man angivit mått på de två minsta storlekarna så ska resterande fyllas in per automatik.
Värdet som skall fyllas i per automatik skall vara enligt följande formel:
värde = (diff mellan två första fälten) + (föregående fält).
Första raden som bilden visar skulle då vara värde = 4 + 24
Förslagsvis så görs uträkningen när man lämnar fält2.

Som i fallet på bilden så skulle måtten för Large och X-Large se ut enligt följande:
28 | 32
54 | 56
33 | 34
48 | 50

Varje uträkning ska ju ske för respektive rad, så det är där jag funderar på hur man ska loopa igenom det hela.

Det blev lite krångligt förklarat kanske :)

Tack på förhand!

tmp.gif
Medlem sedan aug. 20002 272 inlägg
#2

Tjahapp..löste det såhär iaf...

function calcSizeValues(str) {
	var error = false;
	var formName = "sizetable";
	var antal_falt = 0;
	var arrValues = new Array();
	for(i=0; i<document.getElementById(formName).elements.length; i++){
		var fldName = document.getElementById(formName).elements[i ].name;
		if(fldName.indexOf(str) == 0) {
			arrValues[antal_falt] = fldName;
			antal_falt = antal_falt + 1;
		}
	}
	
	var falt1 = "";
	var falt2 = "";
	for (i=0;i<arrValues.length;i++) {
		if(i==0) {
			falt1 = parseInt(document.getElementById(arrValues[i ]).value);
		} else if(i==1) {
			falt2 = parseInt(document.getElementById(arrValues[i ]).value);
		} else {
			var diff = (falt2 - falt1);
			if(!isNaN(falt1) && !isNaN(falt2)) {
				document.getElementById(arrValues[i ]).value = parseInt(document.getElementById(arrValues[i-1]).value) + diff;
			} else {
				error = true
			}
		}
	}
	if(error) {
		alert("Måste ange heltal.");
	}
}

Sen om det är en osmart lösning vet jag inte :p Huvudsaken är att den fungerar efter önskemål.

Fältnummer 2 på varje rad har:

 onkey[B]down[/B]="if(event.keyCode == 9) { calcSizeValues('[I]fältets_namn[/I]'); }

EDIT: Fick ändra "onkeypress" till "onkeydown" då IE inte triggades på TAB med onkeypress.

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)