Avatar billede 3z Nybegynder
17. november 2006 - 13:22 Der er 21 kommentarer og
1 løsning

Indtast i input felt og vis tekst udenfor input felt

Hej,

Ved ikke om det er javascript der skal til, men here goes:

Jeg har to input text felter, hvor man indtaster et beløb. Jeg ville nu gerne kunne lave en beregning ved siden af input feltet på baggrund af det indtastede uden at submitte formen.


input felt 1 indtastes f.eks. 100
input felt 2 indtastes f.eks. 150
Beregning af forskellen mellem disse indtastninger vises: 50

Er det fatbart og muligt ?
Avatar billede roenving Novice
17. november 2006 - 13:32 #1
F.eks.

<form>
<input name="min" value="minimum" onfocus="this.value='';" onchange="visForskel(this);">&nbsp;
<input name="max" value="maximum" onfocus="this.value='';" onchange="visForskel(this);">
</form>
Forskel: <span id="forskel">N/A</span>

<script type="text/javascript">
function visForskel(elm){
  var f = elm.form;
  if(!isNaN(f.min.value) && !isNaN(f.max.value)){
    document.getElementById("forskel").firstChild.nodeValue = f.max.value - f.min.value;
  }else
    document.getElementById("forskel").firstChild.nodeValue = "N/A";
}
</script>
Avatar billede 3z Nybegynder
17. november 2006 - 14:11 #2
Det er sgu perfekt !
Jeg har tilføjet en beregning mere, så jeg kan få forskellen i procent, men det lader til den kun kan beregne een ting ?

<script type="text/javascript">
function visForskel(elm){
  var f = elm.form;
  if(!isNaN(f.min.value) && !isNaN(f.max.value)){
    document.getElementById("forskel").firstChild.nodeValue = f.max.value - f.min.value;
    document.getElementById("forskelprocent").firstChild.nodeValue = (((f.salesprice.value * 0.8) - f.costprice.value) * 100) / f.costprice.value;
  }else
    document.getElementById("forskelprocent").firstChild.nodeValue = "0";
    document.getElementById("forskel").firstChild.nodeValue = "N/A";
}
</script>
Avatar billede roenving Novice
17. november 2006 - 14:20 #3
-- du skal bare huske at indsætte noget i den anden span også !-)

Forskel i %: <span id="forskelprocent">0</span>

-- els velbekomme '-)
Avatar billede 3z Nybegynder
17. november 2006 - 14:50 #4
Det har jeg sandelig gjort, men det virker underligt nok ikke....
(Fortjeneste: <span id="forskel">0</span> kr. / <span id="forskelprocent">0</span>%)
Avatar billede 3z Nybegynder
17. november 2006 - 14:52 #5
Der står bare nul hele tiden - her er hele den del af koden:

<script type="text/javascript">
function visForskel(elm){
  var f = elm.form;
  if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskel").firstChild.nodeValue = (f.salesprice.value * 0.8) - f.costprice.value;
    document.getElementById("forskelprocent").firstChild.nodeValue = (((f.salesprice.value * 0.8) - f.costprice.value) * 100) / f.costprice.value;
  }else
    document.getElementById("forskel").firstChild.nodeValue = "0";
    document.getElementById("forskelprocent").firstChild.nodeValue = "0";
}
</script>

Kostpris: <input type="text" name="costprice" onfocus="this.value='';" onchange="visForskel(this);">

Salgspris: <input type="text" name="salesprice" onfocus="this.value='';" onchange="visForskel(this);">

(Fortjeneste: <span id="forskel">0</span> kr. / <span id="forskelprocent">0</span>%)
Avatar billede sw_red_6 Nybegynder
17. november 2006 - 14:53 #6
det kunne måake være at inputboksene ikke hedder salesprice og costprice, men min og max?
Avatar billede sw_red_6 Nybegynder
17. november 2006 - 14:55 #7
det er fordi du skal have en id="" i input ellers kan javascripten ikke finde elementet ud fra id (getElementById)
Avatar billede sw_red_6 Nybegynder
17. november 2006 - 14:57 #8
pjat, det er mig der ser forkert.. skulle måske få tjekket mine øjne....
Avatar billede sw_red_6 Nybegynder
17. november 2006 - 15:00 #9
en nærlæsning viser at du vidst nok mangler en form som i roenving's kommentar 17/11-2006 13:32:28
Avatar billede krukken Mester
17. november 2006 - 15:06 #10
Fjern dog: "onfocus="this.value=''", det er sku da pisseirriterende når man sidder og arbejder med det;-)
Avatar billede krukken Mester
17. november 2006 - 15:09 #11
endvider tror jeg også at du skal have ændret din if-sætning, da det det er den der sætter feltet til 0%!
Avatar billede krukken Mester
17. november 2006 - 15:10 #12
Hvad hvis det ene felt ikke er angivet?
Avatar billede krukken Mester
17. november 2006 - 15:15 #13
Du mangler også en parantes efter else - ellers får du kun sat det ene af felterne
Avatar billede 3z Nybegynder
17. november 2006 - 15:31 #14
Jeg har selvf. en form - har bare kun vist jer den del der vedr. denne lille beregning. Hvis jeg kun skriver dette, så virker det fint:

<script type="text/javascript">
function visForskel(elm){
  var f = elm.form;
  if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskel").firstChild.nodeValue = (f.salesprice.value * 0.8) - f.costprice.value;
  }else
    document.getElementById("forskel").firstChild.nodeValue = "0";
}
</script>

men tilføjer jeg en linie mere, så er det stadig kun første linie der bliver udført - den anden er bare nul hele tiden:

<script type="text/javascript">
function visForskel(elm){
  var f = elm.form;
  if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskel").firstChild.nodeValue = (f.salesprice.value * 0.8) - f.costprice.value;
    document.getElementById("forskelprocent").firstChild.nodeValue = (((f.salesprice.value * 0.8) - f.costprice.value) * 100) / f.costprice.value;
  }else
    document.getElementById("forskel").firstChild.nodeValue = "0";
    document.getElementById("forskelprocent").firstChild.nodeValue = "0";
}
</script>
Avatar billede sw_red_6 Nybegynder
17. november 2006 - 15:33 #15
har du prøvet krukken skrev 17/11-2006 15:15:30 ?
Avatar billede krukken Mester
17. november 2006 - 15:37 #16
Ja - du skal have en slut-parates efter begge else-sætninger. Eller får du kun sat den ene værdi. Desuden forstå jeg ikke hvor du ikke bruger <td>, <tr> og <table>. Dette ville også give mulighed for at du kan ændre udseendet af din form i et stylesceet.
Avatar billede krukken Mester
17. november 2006 - 15:37 #17
Hov - jeg har vist lidt for tralvt. Undskylder dem mange stavefejl:-)
Avatar billede 3z Nybegynder
17. november 2006 - 16:29 #18
Jeg lavede det sgu bare med en ekstra if sætning - dit forslag virkede ikke krukken. Desuden har jeg selvf. tabeller osv, men bare ikke vist dem her...

function visForskel(elm){{
  var f = elm.form;
  if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskel").firstChild.nodeValue = (f.salesprice.value * 0.8) - f.costprice.value;
  }else
    document.getElementById("forskel").firstChild.nodeValue = "0";
}
  if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskelprocent").firstChild.nodeValue = (((f.salesprice.value * 0.8) - f.costprice.value) * 100) / f.costprice.value;
  }else
    document.getElementById("forskelprocent").firstChild.nodeValue = "0";
}
Avatar billede jhe-ting Nybegynder
17. november 2006 - 19:00 #19
if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskel").firstChild.nodeValue = (f.salesprice.value * 0.8) - f.costprice.value;
    document.getElementById("forskelprocent").firstChild.nodeValue = (((f.salesprice.value * 0.8) - f.costprice.value) * 100) / f.costprice.value;
  }else
    document.getElementById("forskel").firstChild.nodeValue = "0";
    document.getElementById("forskelprocent").firstChild.nodeValue = "0";
}

Skal rettes til:

  if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskel").firstChild.nodeValue = (f.salesprice.value * 0.8) - f.costprice.value;
    document.getElementById("forskelprocent").firstChild.nodeValue = (((f.salesprice.value * 0.8) - f.costprice.value) * 100) / f.costprice.value;
  }else {
    document.getElementById("forskel").firstChild.nodeValue = "0";
    document.getElementById("forskelprocent").firstChild.nodeValue = "0";
}
Avatar billede jhe-ting Nybegynder
17. november 2006 - 19:04 #20
Se :Kommentar: krukken 17/11-2006 15:15:30

Den er god nok - der mangler bare en '{'  og  '}'  Den rettede jeg lige :

  if(!isNaN(f.costprice.value) && !isNaN(f.salesprice.value)){
    document.getElementById("forskel").firstChild.nodeValue = (f.salesprice.value * 0.8) - f.costprice.value;
    document.getElementById("forskelprocent").firstChild.nodeValue = (((f.salesprice.value * 0.8) - f.costprice.value) * 100) / f.costprice.value;
  }else {  // ***
    document.getElementById("forskel").firstChild.nodeValue = "0";
    document.getElementById("forskelprocent").firstChild.nodeValue = "0";
  }  // ***
}
Avatar billede roenving Novice
20. november 2006 - 00:08 #21
Jepz !-)
Avatar billede roenving Novice
20. november 2006 - 00:08 #22
-- 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