In my head it was all supposed to work...but ultimately this worked
<script>
function calculateSubtotal(input, index) {
var price = parseFloat(input.value);
* var quantity =
parseInt(input.parentNode.nextElementSibling.innerHTML);*
var subtotal = parseFloat(price * quantity);
var subtotalElement = document.getElementById("subtotal" +
index);
if (price == 0) {
// If price is 0, display the hidden span with text "Not
Available" in red
subtotalElement.innerHTML = "";
var notAvailableSpan =
input.parentNode.previousElementSibling.querySelector("span.hidden");
notAvailableSpan.style.display = "inline";
subtotalElement.innerHTML = subtotal.toFixed(2);
} else {
var notAvailableSpan =
input.parentNode.previousElementSibling.querySelector("span.hidden");
notAvailableSpan.style.display = "none";
subtotalElement.innerHTML = subtotal.toFixed(2);
updateGrandTotal()
}
}
On Tuesday, March 28, 2023 at 9:00:35 PM UTC+2 Leonel Câmara wrote:
> Looks like you're trying to mix javascript and python code in a quite
> impossible way. Just pass qty instead of index to the function and use that
> as the quantity.
>
> A domingo, 26 de março de 2023 à(s) 15:04:29 UTC+1, mostwanted escreveu:
>
>> I want to be able to calculate subtotal by multiplying quantity and price
>> but I cant because
>> *var quantity = parseInt("{{=details.quantities[index]}}");* in the
>> code below carries the value of 1 and it does not change. Please assist me
>> identify what could be wrong here and how can i rectify it?
>>
>> *Model:*
>> db.define_table('client_order'),
>> Field('quoted_item','list:string', required=True),
>> Field('quantities','list:string', required=True))
>>
>> *View:*
>> {{for index, (item, qty) in enumerate(zip(details.quoted_item,
>> details.quantities)):}}
>> <tr>
>> <td>{{=item}}</td>
>> <td><input type="text" onchange="calculateSubtotal(this,
>> {{=index}})" /></td>
>> <td>{{=qty}}</td>
>> <td><span id="subtotal{{=index}}"></span></td>
>> </tr>
>> {{pass}}
>>
>> <script>
>> function calculateSubtotal(input, index) {
>> var price = parseFloat(input.value);
>> * var quantity = parseInt("{{=details.quantities[index]}}");*
>> var subtotal = parseFloat(price * quantity);
>> document.getElementById("subtotal" + index).innerHTML =
>> subtotal.toFixed(2);
>> updateGrandTotal();
>> console.log(parseFloat("{{=details.quantities[index]}}"));
>> }
>> </script>
>>
>> Regards
>>
>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/f689c35f-a268-4e14-afb9-29d295f3cf76n%40googlegroups.com.