Avatar billede no_doubt Nybegynder
25. marts 2003 - 15:10 Der er 22 kommentarer og
1 løsning

udregning med checkbox

Hvordan gør jeg sådan at når en tjekbox er afkrydset indgår det i en beregning har nu følgende.
  <script type="text/javascript" language="JavaScript"><!--
function beregn( frmObj ) {
var t1 = parseFloat( frmObj.tal1.value, 10);
var t2 = parseFloat( frmObj.tal2.value, 10);
frmObj.Pris.value = t1-t2;
}; //end beregn( HTML Form objekt )

// --></script>

tal1 er check boxen men den bliver regnet med ligemeget hva, og det skal den ikke.
Avatar billede grunken Nybegynder
25. marts 2003 - 15:19 #1
sådan måske ?

<script type="text/javascript" language="JavaScript"><!--
function beregn( frmObj ) {
if (frmObj.tal1.checked == 1) {
var t1 = parseFloat( frmObj.tal1.value, 10);}
if (frmObj.tal2.checked == 1) {
var t2 = parseFloat( frmObj.tal2.value, 10);}
frmObj.Pris.value = t1-t2;
};
-grunken
Avatar billede Slettet bruger
25. marts 2003 - 15:46 #2
Hvordan skal beregningen være, hvis tal1 ikke er valgt?
Avatar billede no_doubt Nybegynder
25. marts 2003 - 15:58 #3
kun tal1 er checkbox men det er muligt der kommer flere.
ja så skal den regne ud fra andre felt, altså dvs 0 hvis ikke valgt
Avatar billede Slettet bruger
25. marts 2003 - 16:27 #4
function beregn(frm) {
  t = parseInt(frm.tal2.value, 10);
  t -= (frm.tal1.checked) ? frm.tal1.value : 0;
  frmObj.Pris.value = t;
}
Avatar billede Slettet bruger
25. marts 2003 - 16:27 #5
Hov:

function beregn(frm) {
  t = parseInt(frm.tal2.value, 10);
  t -= (frm.tal1.checked) ? parseInt(frm.tal1.value) : 0;
  frmObj.Pris.value = t;
}
Avatar billede Slettet bruger
25. marts 2003 - 16:27 #6
Og, der skal lige stå ,10 i den parseInt...
Avatar billede no_doubt Nybegynder
25. marts 2003 - 19:36 #7
<form> 
<script type="text/javascript" language="JavaScript"><!--
function beregn(frm) {
t = parseInt(frm.tal2.value, 10);
t -= (frm.tal1.checked) ? parseInt(frm.tal1.value) : 0;
var t2 = parseFloat( frmObj.tal2.value, 10);}
frmObj.Pris.value = t-t2;
}
// --></script>
<table cellspacing="0"
  cellpadding="0" width="151" height="*">
    <tr align="center">
      <td width="33" align="left">Tal 1</td>
      <td width="10"></td>
      <td align="center" width="108"><div align="left"><p><input type="checkbox" name="tal1"
      value="10"></td>
    </tr>
    <tr align="center">
      <td width="33" align="left">Tal 2</td>
      <td width="10"><div align="center"><center><p>:</td>
      <td align="center" width="108"><div align="left"><p><input name="tal2" value
      onblur="beregn(this.form);" size="9"></td>
    </tr>
    <tr align="center">
      <td width="33" align="left">I alt</td>
      <td width="10"><div align="center"><center><p>:</td>
      <td align="center" width="108"><div align="left"><p><input name="Pris" value
      onfocus="this.blur();" type="text" class="but1" size="9" maxlength="9"></td>
    </tr>
  </table>
</form>
Hvad sker der.
Avatar billede no_doubt Nybegynder
25. marts 2003 - 19:40 #8
<script type="text/javascript" language="JavaScript"><!--
function beregn(frm) {
t2 = parseInt(frm.tal2.value, 10);
t1 = (frm.tal1.checked) ? parseInt(frm.tal1.value) : 0;
frm.Pris.value = t2-t1;
}
// --></script>
<table cellspacing="0"
  cellpadding="0" width="151" height="*">
    <tr align="center">
      <td width="33" align="left">Tal 1</td>
      <td width="10"></td>
      <td align="center" width="108"><div align="left"><p><input type="checkbox" name="tal1"
      value="10"></td>
    </tr>
    <tr align="center">
      <td width="33" align="left">Tal 2</td>
      <td width="10"><div align="center"><center><p>:</td>
      <td align="center" width="108"><div align="left"><p><input name="tal2" value
      onblur="beregn(this.form);" size="9"></td>
    </tr>
    <tr align="center">
      <td width="33" align="left">I alt</td>
      <td width="10"><div align="center"><center><p>:</td>
      <td align="center" width="108"><div align="left"><p><input name="Pris" value
      onfocus="this.blur();" type="text" class="but1" size="9" maxlength="9"></td>
    </tr>
  </table>
</form>

sådan nu udregner den når jeg skriver noget i tal2 men ikke før, den skal jo gerne skrive 10 når jeg kun krydser tal1 af.
Avatar billede Slettet bruger
26. marts 2003 - 16:13 #9
Hvorfor skal der stå 10, når man krydser af? Ville du ikke netop trække 10 fra?

Men du bliver altså nødt til at gøre, som jeg siger! :)

function beregn(frm) {
  t = parseInt(frm.tal2.value, 10);
  t -= (frm.tal1.checked) ? parseInt(frm.tal1.value, 10) : 0;
  frmObj.Pris.value = t;
}
Avatar billede no_doubt Nybegynder
26. marts 2003 - 17:07 #10
Jamen på et tidspunkt skal den udvides med flere felter og afkrydsnings boks og skal så vise et helt beløb efter afkrydsning af nogle felter.
Avatar billede Slettet bruger
26. marts 2003 - 17:10 #11
Jeg tror, du bliver nødt til at forklare helt grundigt, hvad det er, du vil. Ellers kan jeg ikke følge med! :)
Avatar billede no_doubt Nybegynder
26. marts 2003 - 17:13 #12
Jamen jeg vil gerne have nogle checkboks og nogle input felter som har forskellige værdier, hvis man krydser eks en checkbox med value 19 af og en til med 11 og i et felt skriver 100 så skal den i en tekstboks skrive 130
Avatar billede Slettet bruger
26. marts 2003 - 17:18 #13
Har du evt. mulighed for at give alle formfelter, der skal medregnes i regnskabet, et fælles start/slut-bogstav i name?
Avatar billede no_doubt Nybegynder
26. marts 2003 - 17:21 #14
Ja
Avatar billede Slettet bruger
26. marts 2003 - 17:29 #15
OK. Scriptet bliver muligvis lidt krævende for computeren, specielt hvis der er mange formfelter.

<script>
function laegSammen(frm) {
  t = 0;
  for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].name.indexOf("x") == 0)
      t += (frm.elements[i].type != "checkbox" || frm.elements[i].checked) ? parseInt(frm.elements[i].value, 10) : 0;
  }
  frm.ialt.value = t;
}
</script>

Ved dine felter:

<input type="checkbox" value="10" name="x_check" onClick="laegSammen(this.form);">
<input type="text" value="20" name="x_text" onKeyUp="laegSammen(this.form);">
Og:
<input type="text" value="0" name="ialt" readonly>
Avatar billede Slettet bruger
27. marts 2003 - 16:49 #16
Hov:

function laegSammen(frm) {
  t = 0;
  for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].name.indexOf("x") == 0)
      t += (frm.elements[i].type != "checkbox" || frm.elements[i].checked) ? ((frm.elements[i].value == "" || isNaN(frm.elements[i].value)) ? 0 : parseInt(frm.elements[i].value, 10)) : 0;
  }
  frm.ialt.value = t;
}
Avatar billede no_doubt Nybegynder
27. marts 2003 - 22:11 #17
den melder nogle fejl.
den ser nu sådan ud
<script>
function laegSammen(frm) {
t = 0;
for (i = 0; i < frm.elements.length; i++) {
if (frm.elements[i].name.indexOf("x") == 0)
t += (frm.elements[i].type != "checkbox" || frm.elements[i].checked) ? ((frm.elements[i].value == "" || isNaN(frm.elements[i].value)) ? 0 : parseInt(frm.elements[i].value, 10)) : 0;
}
frm.ialt.value = t;
}
</script>

<html>

<head>
<title></title>
</head>

<body>

<p>Ved dine felter: <input type="checkbox" value="10" name="x_check"
onClick="laegSammen(this.form);"> <input type="text" value="20" name="x_text"
onKeyUp="laegSammen(this.form);" size="20"> Og: <input type="text" value="0" name="ialt"
readonly size="20"> </p>
</body>
</html>
Avatar billede Slettet bruger
28. marts 2003 - 15:22 #18
Du har glemt at putte form-koder rundt om.
Avatar billede no_doubt Nybegynder
29. marts 2003 - 12:28 #19
er prøvet
Avatar billede Slettet bruger
29. marts 2003 - 12:53 #20
Det virker for mig, så lad mig se et link.
Avatar billede no_doubt Nybegynder
29. marts 2003 - 16:52 #21
ikke uploaded kun i frontpage
Avatar billede Slettet bruger
30. marts 2003 - 08:54 #22
Dette virker fint:

<html>
<head>
<script>
function laegSammen(frm) {
  t = 0;
  for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].name.indexOf("x") == 0)
      t += (frm.elements[i].type != "checkbox" || frm.elements[i].checked) ? ((frm.elements[i].value == "" || isNaN(frm.elements[i].value)) ? 0 : parseInt(frm.elements[i].value, 10)) : 0;
  }
  frm.ialt.value = t;
}
</script>
</head>
<body>
<form>
<input type="checkbox" value="10" name="x_check" onClick="laegSammen(this.form);"><br>
<input type="text" value="0" name="x_text" onKeyUp="laegSammen(this.form);"><br>
<input type="text" value="0" name="ialt" readonly>
</form>
</body>
</html>
Avatar billede no_doubt Nybegynder
30. marts 2003 - 21:46 #23
Ok
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