Avatar billede leasing Nybegynder
19. juli 2005 - 11:03 Der er 27 kommentarer og
1 løsning

Disable submitknap hvis inputfelt overstiger en værdi fra databas

Jeg har en masse checkboxe som hver har tilknyttet en værdi fra database. Hver gang en checkbox bliver vinget af summeres værdien i et inputfelt ved navn "amount". Dette virker fint.
Når værdien i inputfeltet "amount" overstiger værdien fra databasen skal min button disables.

Håber der er en derude der kan løse denne.
Avatar billede locturian Nybegynder
19. juli 2005 - 12:37 #1
Du kan prøve dette;

if (ditfelt < databaseudtræk) {
    document.getElementById('Submitknap').disabled = true;
}

Ditfelt = dit amount halløj
Database udtræk = fx. <%=RS("Dit_Felt")%>
Sæt et ID på din knap der hedder id="Submitknap"

Det skulle gerne virke :)
Avatar billede leasing Nybegynder
19. juli 2005 - 12:43 #2
Takker...jeg prøver lige.
Et andet spørgsmål: kan du klare den her http://www.eksperten.dk/spm/633298
Avatar billede locturian Nybegynder
19. juli 2005 - 12:51 #3
Synes ikke rigtig jeg kan overskue hvad du vil, ud over, at du vil lægge en masse tal sammen, ved klik på nogle check boxe, og så skrive resultat ud i formatet 1.000,00 ?
Avatar billede leasing Nybegynder
19. juli 2005 - 12:59 #4
Det er også ganske korrekt. Kan man lave det på en anden måde?
Avatar billede roenving Novice
19. juli 2005 - 14:21 #5
function addSubtractValue(elm){
  var amnt = elm.form.amount;
  var total = +rem1000Sep(amnt.value);
  var maxTotal = +elm.form.maxAmount.value;
  var newNum = +elm.value;
  var newTotal = total + elm.checked?newNum:-newNum;
  amnt.value = ins1000Sep(""+newTotal);
  elm.form.minSubmit.disabled = newTotal > maxTotal;
}
Avatar billede leasing Nybegynder
20. juli 2005 - 15:52 #6
Gad du hjælpe mig færdig med denne?
Avatar billede roenving Novice
20. juli 2005 - 16:04 #7
Virker funktionen ikke ?-)
Avatar billede leasing Nybegynder
20. juli 2005 - 20:03 #8
Nej der kommer gul fejlmeddelelse.
Avatar billede roenving Novice
21. juli 2005 - 00:05 #9
Hvad siger den så ?-)

-- du har sørget for at der er et name på submit-knappen, som stemmer overens med det, der er brugt i funktionen ?o]
Avatar billede leasing Nybegynder
21. juli 2005 - 08:38 #10
Submit knap har name=minSubmit
Jeg har lavet en ekstra input med name=maxamount og value=værdi fra database.
Der kommer ingen fejl nu, men min submit knab bliver ikke disabled
Avatar billede leasing Nybegynder
21. juli 2005 - 09:17 #11
Den laver desværre fejl.
Jeg har sat det hele ind i en simpel kode:

<html>
<head>

<script type="text/javascript">
function addSubtractValue(elm){
  var amnt = elm.form.amount;
  var total = +rem1000Sep(amnt.value);
  var maxTotal = +elm.form.maxAmount.value;
  var fltNum = elm.name.replace(/^check(\d+)$/,"$1");
  var newNum = +elm.form.elements["" + fltNum].value;
  var newTotal = total + elm.checked?newNum:-newNum;
  amnt.value = ins1000Sep(""+newTotal);
  elm.form.minSubmit.disabled = newTotal > maxTotal;
}

function ins1000Sep(val){
  val = val.split(",");
  val[0] = val[0].split("").reverse().join("");
  val[0] = val[0].replace(/(\d{3})/g,"$1.");
  val[0] = val[0].split("").reverse().join("").replace(/^\./,"");
  return val.join(",");
}

function rem1000Sep(val){
  return val.replace(/\./g,"");
}
</script>
</head>
<body>

<form method=post name=frmSpillere>
<input type="text" name="amount" value="0"><br>

<input type=text name=amount value=0 READONLY style='width:75px'>
<input type=text name=maxAmount value="1000000" style='width:75px'>

<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>
<input type='checkbox' value=200000 name='check10' onclick='addSubtract(this);' style='height:10px;'><br>

<INPUT type=submit value="Godkend - videre til trin 4" name="minSubmit">

</form>

</body>
</html>

Den mangler et objekt.
Avatar billede roenving Novice
21. juli 2005 - 22:44 #12
Hrm, jeg havde lavet et par tavetosser:

function addSubtractValue(elm){
  var amnt = elm.form.amount;
  var total = +rem1000Sep(amnt.value);
  var maxTotal = +elm.form.maxAmount.value;
  var fltNum = elm.name.replace(/^check(\d+)$/,"$1");
  var newNum = +elm.form.elements["" + fltNum].value;
  var newTotal = total + (elm.checked?newNum:-newNum);
  amnt.value = ins1000Sep(""+newTotal);
  elm.form.minSubmit.disabled = newTotal > maxTotal;
}

-- og inputs skal se sådan ud:

<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br>

-- og så har du to felter med samme navn, det må man godt, men så skal man tage specielle hensyn, men da du ikke skal bruge dubletten til noget, kan du ligesågodt slette den første !-)
Avatar billede leasing Nybegynder
21. juli 2005 - 23:24 #13
Nu skriver den bare NaN i input amount...tæller ikke sammen.

Den fulde kode:

<html>
<head>

<script type="text/javascript">

function addSubtractValue(elm){
  var amnt = elm.form.amount;
  var total = +rem1000Sep(amnt.value);
  var maxTotal = +elm.form.maxAmount.value;
  var fltNum = elm.name.replace(/^check(\d+)$/,"$1");
  var newNum = +elm.form.elements["" + fltNum].value;
  var newTotal = total + (elm.checked?newNum:-newNum);
  amnt.value = ins1000Sep(""+newTotal);
  elm.form.minSubmit.disabled = newTotal > maxTotal;
}


function ins1000Sep(val){
  val = val.split(",");
  val[0] = val[0].split("").reverse().join("");
  val[0] = val[0].replace(/(\d{3})/g,"$1.");
  val[0] = val[0].split("").reverse().join("").replace(/^\./,"");
  return val.join(",");
}

function rem1000Sep(val){
  return val.replace(/\./g,"");
}
</script>
</head>
<body>

<form method=post name=frmSpillere>

<input type=text name=amount value=0 READONLY style='width:75px'>
<input type=text name=maxAmount value="1000000" style='width:75px'>

<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>
<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>
<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>
<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>
<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>
<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>
<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>
<input type='checkbox' value='200000' name='check10' onclick='addSubtractValue(this);' style='height:10px;'><br><br>


<INPUT type=submit value="Godkend - videre til trin 4" name="minSubmit">

</form>

</body>
</html>
Avatar billede roenving Novice
21. juli 2005 - 23:32 #14
-- du bruger jo heller ikke skygge-felterne mere:

function addSubtractValue(elm){
  var amnt = elm.form.amount;
  var total = +rem1000Sep(amnt.value);
  var maxTotal = +elm.form.maxAmount.value;
  var newNum = +elm.value;
  var newTotal = total + (elm.checked?newNum:-newNum);
  amnt.value = ins1000Sep(""+newTotal);
  elm.form.minSubmit.disabled = newTotal > maxTotal;
}
Avatar billede leasing Nybegynder
21. juli 2005 - 23:36 #15
Du har gjort det igen...kanon.
Jeg takker mange gange for din hjælp de sidste par dage.
Gider du svarer.
Avatar billede roenving Novice
21. juli 2005 - 23:50 #16
Velbekomme '-)
Avatar billede leasing Nybegynder
22. juli 2005 - 11:42 #17
Lige en spørgsmål.
Jeg har lavet et ekstra inputfelt name=amountleft - denne vil jeg så gerne have til at være maxAmount-amount hvordan gør jeg det?
Avatar billede roenving Novice
22. juli 2005 - 12:59 #18
Indsæt en linje efter den hvor newTotal bliver beregnet:

elm.form.amountleft.value = ins1000Sep(maxAmount - newTotal);
Avatar billede leasing Nybegynder
22. juli 2005 - 13:11 #19
Gul fejl: 'maxAmount' er ikke defineret
Avatar billede roenving Novice
22. juli 2005 - 13:20 #20
-- nåh nej, den hedder jo maxTotal !-)
Avatar billede roenving Novice
22. juli 2005 - 13:20 #21
-- og tak for point ;~}
Avatar billede leasing Nybegynder
22. juli 2005 - 13:30 #22
Gul fejl: Objektet understøtter ikke denne egenskab eller metode
Avatar billede roenving Novice
22. juli 2005 - 13:31 #23
Nåh, ja, jeg har jo glemt at caste til en string:

elm.form.amountleft.value = ins1000Sep(""+(maxTotal - newTotal));
Avatar billede leasing Nybegynder
22. juli 2005 - 13:34 #24
Har fundet ud af den:

elm.form.amountleft.value = maxAmount - newTotal;
Avatar billede leasing Nybegynder
22. juli 2005 - 13:34 #25
Om igen...sådan her:

elm.form.amountleft.value = maxTotal - newTotal;
Avatar billede leasing Nybegynder
22. juli 2005 - 13:41 #26
Hvis nu input name=amountleft bliver negativ så vises værdi eks. således: -.405.000
kan man få den til at vise det på en pæn måde?
Avatar billede roenving Novice
22. juli 2005 - 13:45 #27
elm.form.amountleft.value = ins1000Sep(""+(maxTotal - newTotal));
  elm.form.minSubmit.disabled = newTotal > maxTotal;
}


function ins1000Sep(val){
  val = val.split(",");
  val[0] = val[0].split("").reverse().join("");
  val[0] = val[0].replace(/(\d{3})/g,"$1.");
  val[0] = val[0].split("").reverse().join("").replace(/^(-)?\./,"$1");
  return val.join(",");
}
Avatar billede leasing Nybegynder
22. juli 2005 - 13:51 #28
Det er jo fantastisk...tusind tak for din hjælp.
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