Avatar billede cyberdude Nybegynder
25. juli 2004 - 14:18 Der er 6 kommentarer og
1 løsning

sammenlægning af flere felter og overføre dem til et ialt felt

Hejsa!

Har en lille form hvor man skal indtaste nogle oplysninger om udgifter vedr. møde aktivitet

formen er :
<form id="moedeafregning_form" action="#" method="post" name="moedeafregning_form">
<table width="550" border="0" cellspacing="0" cellpadding="2">
                                <tr>
                                    <td class="greybg" colspan="2" align="center" valign="top" width="546"><span class="redtxt"><b>Udgiftsopg&oslash;relse</b></span></td>
                                </tr>
                                <tr>
                                    <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg1" size="64"></td>
                                    <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr1" size="17" onkeyup="beregn()"></td>
                                </tr>
                                <tr>
                                    <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg2" size="64"></td>
                                    <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr2" size="17"></td>
                                </tr>
                                <tr>
                                    <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg3" size="64"></td>
                                    <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr3" size="17"></td>
                                </tr>
                                <tr>
                                    <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg4" size="64"></td>
                                    <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr4" size="17"></td>
                                </tr>
                                <tr>
                                    <td valign="top" width="400">Portoudgifter i forbindelse med m&oslash;det</td>
                                    <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="krporto" size="17"></td>
                                </tr>
                                <tr>
                                    <td class="greybg" valign="top" width="400">Ialt</td>
                                    <td class="greybg" valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="krialt" disabled size="17"></td>
                                </tr>
</table>
.....

Jeg vil så gernen have den til at når man indtaster noget i feltet "kr1" så overføres det automatisk til feltet "krialt" (evt. først når feltet "kr1" forlades... og hvis man så har flere udgifter og skal indtaste noget i de øvrige "kr" felter (2,3,4,5) så skal alt dette lægges sammen ov vises i "krialt" feltet

Nogen der kan være behjælpelig med en sådan funktion ?
Avatar billede roenving Novice
25. juli 2004 - 14:29 #1
Den validerer ikke absolut, men fanger de almindeligste fejl, ligesom den udskifter et dansk decimal-komma med et decimal-punktum, som er nødvendigt i javascript !-)

<form id="moedeafregning_form" action="#" method="post" name="moedeafregning_form">
  <table width="550" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td class="greybg" colspan="2" align="center" valign="top" width="546"><span class="redtxt"><b>Udgiftsopg&oslash;relse</b></span></td>
    </tr>
    <tr>
      <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg1" size="64"></td>
      <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr1" size="17" onchange="beregn(this.form)"></td>
    </tr>
    <tr>
      <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg2" size="64"></td>
      <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr2" size="17" onchange="beregn(this.form)"></td>
    </tr>
    <tr>
      <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg3" size="64"></td>
      <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr3" size="17" onchange="beregn(this.form)"></td>
    </tr>
    <tr>
      <td valign="top" width="400"><input class="txtfield_under" type="text" name="udg4" size="64"></td>
      <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="kr4" size="17" onchange="beregn(this.form)"></td>
    </tr>
    <tr>
      <td valign="top" width="400">Portoudgifter i forbindelse med m&oslash;det</td>
      <td valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="krporto" size="17" onchange="beregn(this.form)"></td>
    </tr>
    <tr>
      <td class="greybg" valign="top" width="400">Ialt</td>
      <td class="greybg" valign="top" width="142">Kr. <input class="txtfield_under" type="text" name="krialt" disabled size="17"></td>
    </tr>
  </table>
</form>
<script type="text/javascript">
function beregn(f){
  var ialt = 0,reg = /^\d[\d\.\,]+$/;
  for(i=1;5>i;i++){
    flt = f.elements["kr"+i];
    if(reg.test(flt.value)){
      ialt += +(flt.value.replace(/,/g,"."));
    }
  }
  flt = f.elements["krporto"];
    if(reg.test(flt.value)){
    ialt += +(flt.value.replace(/,/g,"."));
  }
  f.krialt.value = ialt;
}
</script>
Avatar billede cyberdude Nybegynder
25. juli 2004 - 14:43 #2
det ser ud til at virke... men kan man få den til ALTID at sætte 2 dicemaler på "krialt" feltet, og ændre . til , ?
samt gøre brugeren opmærksom på at der er indtastet forkert  - hvis der indtastes andet end 1234567890, for som den er nu hvis der skrives et "e" i et af felterne så stopper beregningen...

flere point hvis det kan laves :-)
Avatar billede roenving Novice
25. juli 2004 - 14:59 #3
Nej beregningen stopper ikke, det felt springes bare over ...

-- men vi kan da godt få den til at alerte, og også sætte decimaler på med komma:

<script type="text/javascript">
function beregn(f){
  var ialt = 0,reg = /^\d([\d\.\,]+)?$|^$/;
  for(i=1;5>i;i++){
    flt = f.elements["kr"+i];
    if(reg.test(flt.value)){
      ialt += +(flt.value.replace(/,/g,"."));
    }else{
      alert('Fejl i beløbsangivelsen.'+flt.name);
      flt.select();
      flt.focus();
      return false;
    }
  }
  flt = f.elements["krporto"];
    if(reg.test(flt.value)){
    ialt += +(flt.value.replace(/,/g,"."));
  }
  ialt *= 100;
  ialt = "" + Math.round(ialt);
  while(3>ialt.length)ialt = "0" + ialt;
  f.krialt.value = ialt.replace(/(\d{2})$/,",$1");
}
</script>
Avatar billede roenving Novice
25. juli 2004 - 15:01 #4
-- og du skal selvfølgelig fjerne +flt.name, når du sætter den i produktion ...
Avatar billede cyberdude Nybegynder
25. juli 2004 - 17:24 #5
smid et svar for point!
Avatar billede roenving Novice
26. juli 2004 - 00:24 #6
Velbekomme '-)
Avatar billede roenving Novice
27. juli 2004 - 00:05 #7
-- og tak for point ;~}
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