Avatar billede fomse Nybegynder
23. november 2003 - 13:07 Der er 25 kommentarer og
1 løsning

Tælle sammen inden der submittes

Jeg har følgende.

DEFAULT.ASP:
<%
DBConnLogin = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("cycling.mdb")

set connect = server.createobject("ADODB.connection")
Connect.Open DBConnLogin

Query = "SELECT Nr, UCI_CODE, Navn, Hold, Land, Alder, Point FROM tblRytter"
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open Query, Connect
%>
<html>
<head>
<title>Tilmelding</title>

<style type="text/css">
<!--
-->
</style><link rel="stylesheet" href="http://www.fomsgaard.com/ccc/ccc2001.css">

</head>
<body topmargin="20" leftmargin="30">
<table>
<tr>
<td><a href="#" onClick="history.back(); return false;" onFocus="this.blur()">
Tilbage</a></td>
<td><a href="#" onClick="history.forward(); return false;" onFocus="this.blur()">Frem</a></td>
</tr>
</table>

<h1 align="center">TILMELDING</h1>

<hr>
<br>
Tilmeld dit hold ved at vælge rytter på nedenstående liste. Sæt hak ud for den/de ryttere du vil have. <br>
Holdet skal bestå af <font color="#ff0000"><strong>20-25</strong></font> ryttere som tilsammen ikke må have mere end <font color="#ff0000"><strong>6.800</strong></font> UCI-point.<br>
<br>
Læs reglerne for holdsammensætning <a href="../regler.htm">HER</a> inden du tilmelder hold.<br>
<br>
Når du har valgt mellem 20 og 25 ryttere så klik på knappen <strong>VIDERE</strong> neders på siden.<br>
<br>
Held og lykke!
<BR>
<BR>
<table class="tilmelding" cellspacing="0" cellpadding="5">
<tr>
<td class="tilmelding" width="20"><b>Nr</b></td>
<td class="tilmelding" width="400"><b>Navn</b></td>
<td class="tilmelding"><b>UCI-Point</b></td>   
<td class="tilmelding"><b>Vælg</b></td>
</tr>
<%
do while not RS.eof
%>   
<form action="sumpoint.asp" method="post" name="form3">
<tr>
<td width="20" class="tilmelding"><% = RS(0) %></td>
<td width="400" class="tilmelding"><% = RS(2) %></td>
<td class="tilmelding"><% = RS(6) %></td>
<td class="tilmelding" align="center"><input type="Checkbox" name="checkpoint" value="<% = RS(0) %>;<% = RS(2) %>;<% = RS(6) %>" onfocus="this.parentElement.parentElement.style.background='#0099ff'" onBlur="this.parentElement.parentElement.style.background='';"></td>   
</tr>
<%
RS.movenext
Loop 
%>
<tr><td colspan="4" class="tilmelding"><input type="Submit" value="VIDERE" onFocus="blur()">&nbsp;&nbsp;
<input TYPE="reset" VALUE="NULSTIL" onFocus="blur()">
</form>
</td>
</tr>
</table>
</body>
</html>

Nu vil jeg gerne øverst på siden have 2 felter der løbende tæller antal ryttere og samlet point sammen inden der submittes til sumpoint.asp

Hvordan gør jeg det?

Ved man kan tælle checkbokse med Javascript men det hjælper mig ikke søndeligt.....

PLEASE HJÆLP MIG

Fomse:-)

PS I kan se systemet her: http://www.fomsgard.com/ccc/tilmelding/default.asp og se hvad jeg mener.
Avatar billede tjaz Nybegynder
23. november 2003 - 13:13 #1
Du kan bruge din loop til det, eks.:

do while not RS.eof
pointialt = pointialt + rs("point")
response.write pointialt
RS.movenext
Loop

hvis jeg har forstået det korrekt?
Avatar billede tjaz Nybegynder
23. november 2003 - 13:13 #2
hov sry

do while not RS.eof
pointialt = pointialt + rs("point")
RS.movenext
Loop

response.write pointialt
Avatar billede fomse Nybegynder
23. november 2003 - 13:19 #3
Tror du misforstår det!

Hvis en checkboks er chekket skal den tælle 1 og samtidig skrive det pointantal der er ud for checkboksen og chekkes en mere skal den summere pointene op.

Prøv at se webside.
Avatar billede fomse Nybegynder
23. november 2003 - 13:20 #4
Sådan du viste det ligger den bare alle point for alle 500 ryttere sammen....
Avatar billede deeflate Nybegynder
23. november 2003 - 16:39 #5
Hmm...

Du kan godt omskrive det script du fik fra dit andet spg med sammentælling af checkbokse ( http://www.eksperten.dk/spm/430633 ) til at gøre det, du ønsker her.
Avatar billede deeflate Nybegynder
23. november 2003 - 16:51 #6
Jeg tog mig lige den frihed at omskrive det for dig ;)

Jeg kan godt nok ikke se dit system på http://www.fomsgard.com/ccc/tilmelding/default.asp
men hvis jeg har forstået dig korrekt, så er det noget meget lig det her, du skal bruge:

<html>
<head>

<script>

function anyCheck(form) {
var total = 0;
var antalPoints = 0;
var max = form.ckbox.length;
for (var i = 0; i < max; i++) {
if (eval("document.playlist.ckbox[" + i + "].checked") == true) {
    total += 1;

    rytterPoint = document.getElementById(i).innerHTML;
    rytterPointTal = parseInt(rytterPoint);
    antalPoints += rytterPointTal;

  }
}

document.getElementById('points').innerHTML = "Med i alt " + antalPoints + " points.";
document.getElementById('antal').innerHTML = "Du har valgt " + total + " ryttere.";

}

</script>

</head>

<body>

<div id="antal"></div>
<div id="points"></div>

<form method="post" name=playlist>
<br><div id="0">200</div>1<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="1">200</div>2<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="2">400</div>3<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="3">200</div>4<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="4">600</div>5<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="5">200</div>6<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="6">800</div>7<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="7">200</div>8<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<br><div id="8">200</div>9<input type=checkbox name=ckbox onClick="anyCheck(this.form);">
<br>
<input type=button value="Videre">
</form>


</body>
</html>
Avatar billede roenving Novice
23. november 2003 - 17:05 #7
Egentlig et javascript-spørgsmål:

<td class="tilmelding" align="center"><input type="Checkbox" name="checkpoint" value="<% = RS(0) %>;<% = RS(2) %>;<% = RS(6) %>" onfocus="this.parentElement.parentElement.style.background='#0099ff'" onBlur="this.parentElement.parentElement.style.background='';" onclick="taelPoints(this)"></td>

<script type="text/javascript">
function taelPoints(fld){
  f = fld.form;
  var points = 0;
  for(i=0;f.elements.length>i;i++){
    felt = f.elements[i];
    if(felt.name=="checkpoint"){
      points += +felt.value.substring(felt.value.lastIndexOf(";")+1);
    }
    if(points>6800){
      alert("Du må kun benytte ryttere indenfor points-grænsen.\n\nDen samlede UCI-pointsum må ikke overstige 6800 !-)")
      fld.checked=false;
    }
  }
}
</script>
Avatar billede deeflate Nybegynder
23. november 2003 - 17:36 #8
Hvis du bruger Roenvings, så husk lige at checke på om checkboxen er valgt, ellers får du bare summen af alle rytteres points.

Dvs. udskift

if(felt.name=="checkpoint"){

med

if(felt.name=="checkpoint" && eval("felt.checked") == true){
Avatar billede roenving Novice
23. november 2003 - 17:40 #9
Det har du helt ret i, deeflate, men det vil være en del nemmere at:

if(felt.name=="checkpoint" && felt.checked){
Avatar billede deeflate Nybegynder
23. november 2003 - 17:43 #10
Ja, det ville det da :)
Avatar billede fomse Nybegynder
23. november 2003 - 20:18 #11
deflate>>

Ville meget gerne bruge din kode, men jeg får en fejl.

Line: 27
Error: Object required

Koden:
<%
DBConnLogin = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("cycling.mdb")

set connect = server.createobject("ADODB.connection")
Connect.Open DBConnLogin

Query = "SELECT Nr, UCI_CODE, Navn, Hold, Land, Alder, Point FROM tblRytter"
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open Query, Connect
%>
<html>
<head>

<script>
function anyCheck(form) {
var total = 0;
var antalPoints = 0;
var max = form.checkpoint.length;
for (var i = 0; i < max; i++) {
if (eval("document.form3.checkpoint[" + i + "].checked") == true) {
    total += 1;

    rytterPoint = document.getElementById(i).innerHTML;
    rytterPointTal = parseInt(rytterPoint);
    antalPoints += rytterPointTal;

  }
}

document.getElementById('points').innerHTML = "Med i alt <font color='#ff0000'><b>" + antalPoints + "</b></font> points.";
document.getElementById('antal').innerHTML = "Du har valgt <font color='#ff0000'><b>" + total + "</b></font> ryttere.";

}

</script>

<title>Tilmelding</title>

<style type="text/css">
<!--
-->
</style><link rel="stylesheet" href="http://www.fomsgaard.com/ccc/ccc2001.css">

</head>
<body topmargin="20" leftmargin="30">
<table>
<tr>
<td><a href="#" onClick="history.back(); return false;" onFocus="this.blur()">
Tilbage</a></td>
<td><a href="#" onClick="history.forward(); return false;" onFocus="this.blur()">Frem</a></td>
</tr>
</table>

<h1 align="center">TILMELDING</h1>

<hr>
<br>
Tilmeld dit hold ved at vælge rytter på nedenstående liste. Sæt hak ud for den/de ryttere du vil have. <br>
Holdet skal bestå af <font color="#ff0000"><strong>20-25</strong></font> ryttere som tilsammen ikke må have mere end <font color="#ff0000"><strong>6.800</strong></font> UCI-point.<br>
<br>
Læs reglerne for holdsammensætning <a href="../regler.htm">HER</a> inden du tilmelder hold.<br>
<br>
Når du har valgt mellem 20 og 25 ryttere så klik på knappen <strong>VIDERE</strong> neders på siden.<br>
<br>
Held og lykke!
<BR>
<BR>

<div id="antal"></div>
<div id="points"></div>
<br>
<table class="tilmelding" cellspacing="0" cellpadding="5">
<tr>
<td class="tilmelding" width="20"><b>Nr</b></td>
<td class="tilmelding" width="400"><b>Navn</b></td>
<td class="tilmelding"><b>UCI-Point</b></td>   
<td class="tilmelding"><b>Vælg</b></td>
</tr>
<%
do while not RS.eof
%>   
<form action="sumpoint.asp" method="post" name="form3">
<tr>
<td width="20" class="tilmelding"><% = RS(0) %></td>
<td width="400" class="tilmelding"><% = RS(2) %></td>
<td class="tilmelding"><% = RS(6) %></td>
<td class="tilmelding" align="center"><input type="Checkbox" name="checkpoint" value="<% = RS(0) %>;<% = RS(2) %>;<% = RS(6) %>" onClick="anyCheck(this.form)" onfocus="this.parentElement.parentElement.style.background='#0099ff'" onBlur="this.parentElement.parentElement.style.background='';"></td>   
</tr>
<%
RS.movenext
Loop 
%>
<tr>
<td colspan="4" class="tilmelding"><input type="Submit" value="VIDERE" onFocus="blur()">&nbsp;&nbsp;
<input TYPE="reset" VALUE="NULSTIL" onFocus="blur()"></form></td>
</tr>
</table>
</body>
</html>

Betyder det noget at rytterens point er i RS(6)?
Avatar billede deeflate Nybegynder
23. november 2003 - 20:34 #12
Det er fordi rytterens point i mit eksempel skrives ud i et <div> og således også hentes derfra. Det er altså det objekt der mangler.
Du kan istedet hente rytterens point som roenving har gjort det.
Det er blot en udskiftning af funktionen til dette:

function anyCheck(form) {

var total = 0;
var antalPoints = 0;

  for(i=0;form.elements.length>i;i++){
    felt = form.elements[i];
    if(felt.name=="checkpoint" && felt.checked){

    total += 1;
    antalPoints += +felt.value.substring(felt.value.lastIndexOf(";")+1);
  }
}

document.getElementById('points').innerHTML = "Med i alt " + antalPoints + " points.";
document.getElementById('antal').innerHTML = "Du har valgt " + total + " ryttere.";

}
Avatar billede deeflate Nybegynder
23. november 2003 - 20:42 #13
Eller sådan her - så sparer du en betingelse ;) :

function anyCheck(form) {

var total = 0;
var antalPoints = 0;

for (var i = 0; i < form.checkpoint.length; i++) {

if (form.checkpoint[i].checked) {
    total += 1;
    antalPoints += +form.checkpoint[i].value.substring(form.checkpoint[i].value.lastIndexOf(";")+1);
  }
}

document.getElementById('points').innerHTML = "Med i alt " + antalPoints + " points.";
document.getElementById('antal').innerHTML = "Du har valgt " + total + " ryttere.";

}
Avatar billede fomse Nybegynder
23. november 2003 - 20:46 #14
Den skriver følgende nu:

Du har valgt 2 ryttere.
Med i alt NaN points.
Avatar billede deeflate Nybegynder
23. november 2003 - 20:53 #15
Og det er vel et tal du har der, ikke?

Hjælper det at skifte

antalPoints += +form.checkpoint[i].value.substring(form.checkpoint[i].value.lastIndexOf(";")+1);

ud med

antalPoints += parseInt(form.checkpoint[i].value.substring(form.checkpoint[i].value.lastIndexOf(";")+1));

?
Avatar billede fomse Nybegynder
23. november 2003 - 20:53 #16
Kan man også gøre sådan at div'en starter med at vise 0 og ikk ekun er synlig når der er valgt en?
Avatar billede fomse Nybegynder
23. november 2003 - 20:55 #17
Kanon nu virker det!
Avatar billede deeflate Nybegynder
23. november 2003 - 20:56 #18
Ja, så skriver du det bare i den.

<div id="antal">Du har valgt 0 ryttere</div>
<div id="points">Med i alt 0 points</div>

Funktionen skifter indholdet ud.
Avatar billede fomse Nybegynder
23. november 2003 - 20:56 #19
Bortset fra den ikke regner med decimaler:-)
Avatar billede fomse Nybegynder
23. november 2003 - 21:05 #20
Ved du det med decimalerne?
Avatar billede deeflate Nybegynder
23. november 2003 - 21:12 #21
Prøv med parseFloat i stedet for parseInt.

Jeg bliver desværre nødt til at smutte i et par timer, beklager.
Avatar billede fomse Nybegynder
23. november 2003 - 21:15 #22
Virkede heller ikke med parseFloat!

Det er bare helt iorden! Kikker på det senere eller i morgen.
Smider 50 point ekstra hvis du hjælper meg med decimalerne....

Fomse:-)
Avatar billede fomse Nybegynder
23. november 2003 - 21:29 #23
Prøver lige at spørge i Javascript-kategorien...
Avatar billede deeflate Nybegynder
23. november 2003 - 23:29 #24
Hvis du skal bruge parseFloat skal du skifte komma ud med punktum.
Avatar billede deeflate Nybegynder
23. november 2003 - 23:32 #25
Prøv at skifte funktionen ud med dette her:

function anyCheck(form) {

var total = 0;
var antalPoints = 0;

for (var i = 0; i < form.checkpoint.length; i++) {

if (form.checkpoint[i].checked) {
    total += 1;

    felt = form.checkpoint[i]
    tal = felt.value.substring(felt.value.lastIndexOf(";")+1).replace(",",".")
    antalPoints += parseFloat(tal);
  }
}

document.getElementById('points').innerHTML = "Med i alt " + antalPoints + " points.";
document.getElementById('antal').innerHTML = "Du har valgt " + total + " ryttere.";

}
Avatar billede deeflate Nybegynder
23. november 2003 - 23:36 #26
Mangler lige et par semikoloner...

Du kan også bare skrive det sammen til

function anyCheck(form) {

var total = 0;
var antalPoints = 0;

for (var i = 0; i < form.checkpoint.length; i++) {

felt = form.checkpoint[i];

if (felt.checked) {
    total += 1
    antalPoints += parseFloat(felt.value.substring(felt.value.lastIndexOf(";")+1).replace(",","."));
  }
}

document.getElementById('points').innerHTML = "Med i alt " + antalPoints + " points.";
document.getElementById('antal').innerHTML = "Du har valgt " + total + " ryttere.";

}
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
Kurser inden for grundlæggende programmering

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