FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
hej!
Har kört fast lite här...Jag har ett formulär som räknar ihop ett "input" value med ett fast value. så här $j('#debtid').keyup(function(){ if(!isNaN(this.value) && this.value.length!=0) { sum = parseFloat(this.value) * parseFloat($j('#debtid1').val()); sumink= sum*1.25; } $j('#debex').html(sum.toFixed(2));//(har classnamn .totex) $j('#debink').html(sumink.toFixed(2)); calculateall(); }); också har jag 7 st sådana rader(functioner,fält..), allt väll hittills räknar ihop utan problem men sedan när jag ska räkna ihop dessa rader för totalt värde så fungerar det inte längre, alltså functionen calculateall() fungerar inte. function calculateall() { var exsum = 0; $j('.totex').each(function() { if(!isNaN(this.value) && this.value.length!=0) { exsum += parseFloat(this.value); } }); $j('#exsum').html(exsum.toFixed(0)); } jag antar att det har med att göra att alla värdena i dessa div som har classnamn totex är uppdaterade med jquery, men hur får jag då tag på det nya värdet så jag kan fylla i totalvärdet? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
istället för this.value, använd $(this).val()
Rätt inkonsekvent som du gör nu. Får du något felmeddelande från javascriptet? calculateall ska ju ta de nya värdena, eller är det så att det kommer till fält med class "totex" som ska med i beräkningen? Det borde ju också fungera. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Banned
|
Ska det inte vara
$j('#debtid').on('keyup', function(){ }); istället för $j('#debtid').keyup(function(){}); |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
.val måste det ju va eftersom det är en div, men det hjälpte inte. Räknar fortfarande inte ihop och .on fungerade inte heller, då slutade den räkna helt, kan bero på att jag kör jquery 1.2.6 och är lite rädd för att uppdatera för jag kör massa andra jquery script som jag misstänker slutar fungera då. och dom har jag inte skrivit själv så där vill man helst slippa gå in och rota. provade med .live också men ville inte då heller. Någon annan som har något förslag?
så här ser html ut <td align="center" style="border:1px dotted #999;" >Debiterbar tid</td> <td align="center" style="border:1px dotted #999;">'.$debtid.'h</td> <td align="center" style="border:1px dotted #999;"><input type="hidden" id="debtid1" value="'.$debtid.'"><input type="text" id="debtid" value=""></td> <td align="center" style="border:1px dotted #999;"><div id="debex" class="totex" style="display:inline;">0.00</div>kr</td> <td align="center" style="border:1px dotted #999;"><div id="debink" class="totink" style="display:inline;">0.00</div>kr</td> Senast redigerad av Fia den 2013-08-21 klockan 09:53 |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Banned
|
Är det en div så ska du använda .html() eller .text().
.html() lägger in html-kod .text() lägger in ren text. Så skulle du skriva HTML här, så kommer det synas som ren text. .val() funkar enbart på form-element (input, textarea och dylikt). |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Jag ska inte lägga in i detta skedet jag ska hämta då är det väll .val?
|
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Banned
|
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Mycket flitig postare
|
Precis som hnn säger, så skall du använda .html() eller .text().
I detta fallet skall du använda .text(), annars tar du med dig all ev. html kod som finns inom den div'en. .text() = hämtar TEXTEN som står inom det angivna elementet .text("skriv något") = lägger in TEXT inom det angivna elementet .html() = hämtar HTML+TEXT som står inom det angivna elementet. .html("<p>text</p>") = lägger in HTML+TEXT inom det angivna elementet. |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
det slutade så här
function calculateall() { var exsum = 0; exsum = (Number($j('#debtid').val()) * Number($j('#debtid1').val())) + (Number($j('#enk').val(),10) * Number($j('#enk1').val())) + (Number($j('#kval').val()) * Number($j('#kval1').val())) + (Number($j('#km').val()) * Number($j('#km1').val())) + (Number($j('#kr').val()) * Number($j('#kr1').val())) + (Number($j('#ut').val()) * Number($j('#ut1').val())) + (Number($j('#et').val()) * Number($j('#et1').val())); inksum=exsum*1.25; $j('#exsum').html(exsum.toFixed(2)); $j('#inksum').html(inksum.toFixed(2)); } strunta i de uppdaterde värdena och hämta orginalvärdena och räkna om dem igen. |
||
![]() |
![]() |
Svara |
|
|