Avatar billede Slettet bruger
02. januar 2005 - 18:29 Der er 8 kommentarer og
1 løsning

Skal lave nogle udregninger ud fra nogle inputfelter

hej

Jeg har nogle input felter jeg gerne vil have regnet sammen.

Hvordan man man lige dette, jeg vil have at udregningen sker realtime, så scriptet skal ligge tallere sammen så snart man skriver noget i et af felterne..

Den skal tilsidst skrive resultatet i et andet inputfelt.
Avatar billede softspot Forsker
02. januar 2005 - 19:13 #1
Du skal reagere på onchange-eventet i de tekstfelter der skal lægges sammen.

Dit script skal tage højde for tomme felter og ikke numeriske værdier i felterne.

Noget i stil med (der er ikke taget højde for ikke numeriske værdier):

function calc()
{
  var t1 = document.frm.ta1;
  var t2 = document.frm.tal2;
  var resultat = 0;

  if(t1.value != "")
    resultat += t1.value;

  if(t2.value != "")
    resultat += t2.value;

  frm.res.value = resultat;

  return true;
}

<form id="frm">
  <input type="textbox" id="tal1" name="tal1" onchage="calc()" />
  <input type="textbox" id="tal2" name="tal2" onchage="calc()" />
  <input type="textbox" id="res" name="res" />
</form>
Avatar billede softspot Forsker
02. januar 2005 - 19:17 #2
Hmmm... ikke testet godt nok :( her kommer lige et nyt:

<html>

<head>
<script language="javascript">
function calc()
{
  var t1 = document.frm.tal1;
  var t2 = document.frm.tal2;
  var resultat = 0;

  if(t1.value != "")
    resultat += parseInt(t1.value);

  if(t2.value != "")
    resultat += parseInt(t2.value);

  frm.res.value = resultat;

  return true;
}
</script>
</head>

<body>
<form id="frm" name="frm">
  <input type="textbox" id="tal1" name="tal1" onchange="calc()" />
  <input type="textbox" id="tal2" name="tal2" onchange="calc()" />
  <input type="textbox" id="res" name="res" />
</form>
</body>

</html>
Avatar billede softspot Forsker
02. januar 2005 - 20:03 #3
hvis du vil kontrollere for numerisk værdi kan du benytte flg. check:

if(!isNaN(parseInt(t1.value)))
{
  // så er værdien numerisk, da parseInt returnerer NaN
  // når en streng ikke er numerisk
}
Avatar billede Slettet bruger
02. januar 2005 - 21:34 #4
softspot: Mit problem er, at jeg ikke ved hvormange input fleter der skal udregnes efter... Kan man ikke placere denne funktion ved input felterne.. Så man ikke slkal difinere input navnene i en scripts funktion
Avatar billede softspot Forsker
02. januar 2005 - 22:07 #5
Hvis du kalder alle inputfelterne det samme kan du tilgå dem som et array.

Eksempel:

<html>

<head>
<script language="javascript">
function calc()
{
  var resultat = 0;

  for(var idx = 0; idx < document.frm.tal.length; idx++)
  {
    var tallet = document.frm.tal[idx];
    if(tallet.value != "")
      resultat += parseInt(tallet.value);

    frm.res.value = resultat;
  }

  return true;
}
</script>
</head>

<body>
<form id="frm" name="frm">
  <input type="textbox" id="tal" name="tal" onchange="calc()" />
  <input type="textbox" id="tal" name="tal" onchange="calc()" />
  <input type="textbox" id="tal" name="tal" onchange="calc()" />
  <input type="textbox" id="res" name="res" />
</form>
</body>

</html>
Avatar billede Slettet bruger
02. januar 2005 - 23:00 #6
Her er et eksempel:

http://www.webfun.dk/test.htm

jeg ved ikke hvor mange forskellige sager der bliver vist... Her er det kun 2, men der kunne nemt være 8 måske flere.

jeg vil så have alt scriptet skal kunne udregne overarbejde ud fra hvor man kan indtaster og kontra normal tiden.. Derudover skal den hele tiden udregne Til i alt for den besteme sag.

Hvordan gør jeg dette, for jeg ved som sagt ikke hvor mange der kommer... De vil altid hedde: sagsnummer_kode_ugedag (mandag = 1, torsdag = 2 osv.. ) Kode starter ved 1 og frem alt efter hvor mange forskellige der er.
Avatar billede softspot Forsker
02. januar 2005 - 23:56 #7
Så fungerer det nok ikke særlig godt med den metode hvor man navngiver alle kontroller ens :)

Du kunne i stedet definere (genereres på serveren) et array af sagsnavne, som du kunne gennemløbe i din beregning af hhv. timer i alt pr. uge og timer pr. dag. Dette array benytter du som grundlag for beregning. Genneløbet checker værdier på samme måde som det allerede viste eksempel, men henter blot navne på kontroller fra et array i stedet.

Noget i stil med dette:

var sagskoder = array('sag_1_','sag_2_','sag_3_','sag_4_');

// beregning af timer pr. uge (vandret) - der er altid 7 dage... ikk'?
for(var sagIdx = 0; sagIdx < sagskoder.length; sagIdx++)
{
  for(var idx = 0; idx < 7; idx++)
  {
    // find den kontrol der skal aflæses
    var tal = document.getElementById(sagskoder[sagIdx] + hentUgeDagTekst(idx));
    // gør som vist tidligere for at beregne...
  }
}


Funktionen "hentUgeDagTekst" returnerer teksten for den pågældende ugedag (1=man, 2=tir osv...).

Hvis du så er rigtig fiks laver du et array der opsummerer hver dags timeforbrug samtidig med at du opsummerer ugens forbrug pr. sag... der skal også være lidt til dig ;)
Avatar billede Slettet bruger
03. januar 2005 - 00:13 #8
softspot: Det ser godt ud.. Men vil du ikke lige kommet med et helt eksempel, for kan ikke få det til at virke lige nu..
Avatar billede Slettet bruger
23. marts 2005 - 13:25 #9
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester