Avatar billede 3z Nybegynder
06. maj 2005 - 12:15 Der er 19 kommentarer og
1 løsning

Automatisk opdatere tal

Hej,

Jeg har en prisliste med ca. 200 varer, som vi sidder og opdaterer. Vi indtaster prisen ex.moms og jeg ville nu gerne lave det sådan, at når man indtaster prisen ex.moms og tabber videre til næste felt, så skal den selv skrive prisen inkl. moms (dvs. gange med 1,25) UDEN at submitte hele prislisten ?

Er det muligt og i så fald hvordan ?

Det må nemlig ikke være sådan at hele formularen submittes, da den først til sidst ved tryk på knappen opdater, skal sendes og opdateres i databasen...
Avatar billede busschou Praktikant
06. maj 2005 - 12:59 #1
Du kan idet der submittes køre en funktion inden den opdaterer databasen som retter oplysningerne
Enten via javascript eller asp
Avatar billede busschou Praktikant
06. maj 2005 - 13:01 #2
Med mindre du ønsker se det live?
Så ville jeg personligt gøre det inden det blev smidt i databasen i asp
Blot tage værdien og gange med 1.25
Hvis du gerne vil se det. Men ikke "helt live" så kunne du lave en ekstra knap "pålæg moms" når man klikker på den. Så køre et javascript som rendte hele formen igennem og gangede med 1.25
---
Vil gerne hjælpe dig. Men synes den nemmeste løsning er i asp at rette til der hvor du sætter ind i databasen
Avatar billede busschou Praktikant
06. maj 2005 - 13:32 #3
Her er et eksempel hvor du har din normale submit knap. Men også en moms knap
Når du klikker på moms knappen vil alle felterne blive ganget med 1.25
---
<head>
<script>
function moms(){
for (i=0;i<document.forms['myForm'].elements.length-2;i++){
  document.forms['myForm'].elements[i].value = parseInt(document.forms['myForm'].elements[i].value)*1.25;
}
}
</script>
</head>
<body>
<form name="myForm">
<input type="text"></input>
<input type="text"></input>
<input type="submit" value="gem">
<input type="button" value="moms" onclick="moms();">
</form>
</body>
Avatar billede 3z Nybegynder
06. maj 2005 - 14:00 #4
Det skal hverken være med momsknap eller submitknap - som jeg skrev i spørgsmålet, så skal det fungere sådan, at når man indtaster og bare hopper til næste felt, så skriver den automatisk beløbet inkl. moms...

Jeg ved det kan lade sig gøre, men ved ikke om det er javascript el.lign, men jeg skal bruge det på min ASP side, hvorfor jeg postede her...
Avatar billede thesurfer Nybegynder
06. maj 2005 - 14:01 #5
Jeg ville nok hellere bruge onFocus og onBlur.. men pas på.. hvis man redigere samme felt flere gange, vil den gange værdien med 1,25 hver gang..

Med mindre, at man bruger et skjult felt, med en delimiter/separator, så kan løse problemet..
Avatar billede thesurfer Nybegynder
06. maj 2005 - 14:01 #6
..og ja, det skal laves med JavaScript.. ikke ASP..
Avatar billede busschou Praktikant
06. maj 2005 - 14:06 #7
Jamen undskyld mig så
Men så sådan her så i alle dine input felter
<input type="text" onblur="this.value=parseInt(this.value)*1.25"></input>
Avatar billede 3z Nybegynder
06. maj 2005 - 14:37 #8
Jeg fandt dette som virker helt efter hensigten, men den vil ikke acceptere kommatal ( 2,3) ???

<form name="formen">
indtast et tal her: <input type="text" name="felt1" onkeyup="document.formen.felt2.value = this.value*12"><br>
og her får du det ganget med tolv. <input type="text" name="felt2">
Avatar billede 3z Nybegynder
06. maj 2005 - 14:38 #9
Den vil kun acceptere punktum som decimaladskillelse og jeg har forsøgt med session.lcid = 1030, men det hjælper ikke ?
Avatar billede busschou Praktikant
06. maj 2005 - 14:56 #10
Du kan evt lave en funktion til at rette . til , og omvendt i din head
<script>
function moms(elm){
tal = elm.value.replace(',','.');
moms = parseFloat(tal)*1.25 + "";
elm.value = moms.replace('.',',');
}
</script>
<input type="text" onblur="moms(this)">
Avatar billede busschou Praktikant
06. maj 2005 - 15:15 #11
der var en fejl -sådan her med to felter som du ønsker jvnf 14:37:27
<head>
<script>
function moms(val){
var tal = val.replace(',','.');
var moms = parseFloat(tal)*1.25 + "";
val = tal.replace('.',',');
return moms.replace('.',',');
}
</script>
</head>
<body>

<form name="myForm">
<input name="felt1" type="text" onblur="document.forms['myForm'].felt2.value = moms(this.value)"></input>
<input name="felt2" type="text"></input>
</form>
</body>
Avatar billede busschou Praktikant
06. maj 2005 - 15:16 #12
og der kan du jo så vælge enten bruge onblur eller onkeyup som du ønsker :o)
Avatar billede busschou Praktikant
06. maj 2005 - 15:19 #13
3z En anden gang er du så ikke venlig oplyse om du stiller spørsmålet videre så vi andre ikke "knokler" forgæves for at hjælpe dig?
http://www.eksperten.dk/spm/615610
Avatar billede busschou Praktikant
06. maj 2005 - 15:19 #14
og så et svar da jeg mener jeg har givet dig en fair god løsning som opfylder dit ønske :o)
Avatar billede 3z Nybegynder
06. maj 2005 - 15:37 #15
Fantastisk det virker jo - kan du smide en formatnumber på, så jeg kun får 2 decimaler i outputtet også ?
Avatar billede busschou Praktikant
06. maj 2005 - 15:43 #16
yes:
---
<head>
<script>
function moms(val){
var tal = val.replace(',','.');
var moms = parseFloat(tal)*1.25;
moms = moms.toFixed(2) + "";
val = tal.replace('.',',');
return moms.replace('.',',');
}
</script>
</head>
<body>

<form name="myForm">
<input name="felt1" type="text" onblur="document.forms['myForm'].felt2.value = moms(this.value)"></input>
<input name="felt2" type="text"></input>
</form>
</body>
Avatar billede 3z Nybegynder
06. maj 2005 - 15:48 #17
Jeg bukker og najer - det er super godt, virker præcis efter hensigten - takker
Avatar billede 3z Nybegynder
06. maj 2005 - 16:38 #18
Lige en ting til, kan man lave sådan at hvis felt1 er "0" (nul) så skal felt2 skrive "-" (bindestreg) ?
Avatar billede busschou Praktikant
06. maj 2005 - 16:42 #19
ja på følgende (utestet) måde:
---
<head>
<script>
function moms(val){
var tal = val.replace(',','.');
var moms = parseFloat(tal)*1.25;
moms = moms.toFixed(2) + "";
val = tal.replace('.',',');
return moms.replace('.',',');
}
</script>
</head>
<body>

<form name="myForm">
<input name="felt1" type="text" onblur="document.forms['myForm'].felt2.value = (this.value=='0')?'-':moms(this.value)"></input>
<input name="felt2" type="text"></input>
</form>
</body>
Avatar billede thesurfer Nybegynder
07. maj 2005 - 00:12 #20
"document.forms['myForm']" kan erstattes med "this.form"

Dvs: this.form.felt2.value
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