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 web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/f689c35f-a268-4e14-afb9-29d295f3cf76n%40googlegroups.com.