Avatar billede thanse21 Nybegynder
10. maj 2005 - 12:01 Der er 10 kommentarer

JavaScript på textbox'e

Jeg skal have lavet et javascript i min webapplikation, der kan udfylde texten i en textbox på baggrund af en udregning på værdien fra to textbox'e. Det skal ske ved onblur-eventen på en textbox.

Der er tre textboxe:
1) Indeholder aktuel løn for en person
2) Indeholder budgetteret løn for en person
3) Indeholder den procentvise forskel mellem aktuel løn og budgetteret løn for en person.

Det er meningen at hvis man ændrer i 2) skal 3) vise ændringen i procent, og hvis man ændrer 3) skal 2) vise den nye løn udfra den procentsats man har angivet i 3).

Kan I hjælpe mig, og kan I overhovedet forstå hvad jeg skriver?
Avatar billede busschou Praktikant
10. maj 2005 - 12:11 #1
noget ala
<form name="myform">
<input type="text" name="nummer1">
<input type="text" name="nummer2" onblur="this.form.nummer3.value=(this.form.nummer1.value/this.value)*100">
<input type="text" name="nummer3" onblur="this.form.nummer2.value=(this.form.nummer1.value/100)*this.value">
</form>
Jeg er ikke sikker på procent regningen er helt rigtig :o)
Avatar billede busschou Praktikant
10. maj 2005 - 12:13 #2
procent regningen kommer jo an på om du vil vide hvor meget 2) er i procent i forhold til 1) eller omvendt
Men det er jo til at vende om hvis du mener det omvendt af det jeg har lavet
Avatar billede busschou Praktikant
10. maj 2005 - 12:14 #3
ps: jeg så slet ikke det her var i asp.net kategorien. Men javascriptet burde virke alligevel vil jeg tro - kender intet til asp.net desværre
Avatar billede thanse21 Nybegynder
10. maj 2005 - 12:19 #4
hmm...ja det jo fordi javascriptet skal smides på textboxene serverside, det var derfor jeg smed den her.

Hvordan får jeg fat i en <asp:textbox> med javascript...kan man overhovedet det?
Avatar billede busschou Praktikant
10. maj 2005 - 12:24 #5
Jeg har desværre ingen anelse om hvordan det fungerer i asp.net
Normalt refererer man enten til formens navn og via den til elementet eller direkte via elementets id

Men der må være andre som ved hvordan man gør i asp.net :o)
Avatar billede snepnet Nybegynder
10. maj 2005 - 12:32 #6
der er ingen forskellige hvad clientside-delen angår... det er ikke en asp:TextBox når det kommer ud til klienten, men bare en <input ...

det der kan gøre det lidt mere gnidret er, at frameworket sikrer dig unikke id's på dine serverkontroller, hvilket typisk er et problem i databundne lister, hvor du kan have angivet en template indeholdende en
<asp:TextBox id="blah"

den vil hos klienten får et andet id, men det er nemmest at forstå hvis du kigger i den genererede html.

efter en given kontrol er smidt ind i kontroltræet, kan du få dens id programmatisk ved :
someTextBox.ClientID som du så kan bruge til at generere dit javascript.

mvh
Avatar billede thanse21 Nybegynder
10. maj 2005 - 15:24 #7
Nu virker det næsten, men den concat'er tallene istedet for at regen dem ud. Det er jo nok noget javascriptsyntax, men kan I hjælpe mig:

string txtBudgetLoenId = txtBudgetLoen.ClientID;
string txtLoenId = txtLoen.ClientID;
string txtLoenPctId = txtLoenProcent.ClientID;

txtBudgetLoen.Attributes["onblur"] = "this.form."+txtLoenPctId+".value=((this.form."+txtBudgetLoenId+".value - this.form."+txtLoenId+".value)/this.form."+txtLoenId+".value)*100";

txtLoenProcent.Attributes["onblur"] = "this.form."+txtBudgetLoenId+".value=(this.form."+txtLoenId+".value+((this.form."+txtLoenId+".value * this.value)/100))";

Det er den sidste "klump" der giver problemet
Avatar billede snepnet Nybegynder
10. maj 2005 - 16:53 #8
hmmm... den tolker det åbenbart som tekst, og ikke som tal.
jeg tror jeg ville lave sådan en her (er ikke det store hit til javascript) :

function calculateResult()
{
  var a = document.getElementById('id1').value;
  var b = document.getElementById('id2').value;
  var c = document.getElementById('id3').value;
  document.getElementById('id4').value = ((a+b)/c)*100;
}

funktionen kan du skrive ud på siden dynamisk hvis du gør sådan her :

private string CalculaterScript = @"
function calculateResult()
{
  var a = document.getElementById('{0}').value;
  var b = document.getElementById('{1}').value;
  var c = document.getElementById('{2}').value;
  document.getElementById('{3}').value = ((a+b)/c)*100;
}
";

if(!(this.IsStartupScriptRegistered("CalculaterScript"))
  this.RegisterStartUpScript("CalculaterScript", String.Format(CalculaterScript, id1, id2, id3, id4));

de id's du angiver er som dem du har fra tidligere.

det er så en løsning hvor du laver det hele fra din kode, men du kunne også lægge et fast script på siden der bare tager nogle parametre, hvis det er en option for dig ?

hvis det er en udregningsklods du skal bruge flere steder, ville jeg nok pakke det ind i en kontrol, og lade den generere script mv. selv.

du kan måske også få lidt inspiration af en anden lommeregner :
http://javascript.internet.com/calculators/5-function.html

mvh
Avatar billede snepnet Nybegynder
07. september 2005 - 17:34 #9
how goes?
mvh
Avatar billede thanse21 Nybegynder
05. juli 2012 - 09:26 #10
snepnet smid et svar og få point for et gammelt spm.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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