Este es el código en mi plantilla, toma el valor de la identificación del campo de entrada y calcula el valor. El código solo funciona para un campo o elemento de conjunto de formularios, como uno que tenga id= id_form-0-rate. No sé por qué el bucle no funciona para conjuntos de formularios agregados, como uno que tiene id = id_form-1-rate.
plantilla.html
<script type = "text/javascript" > var id= $("#id_form-TOTAL_FORMS").val(); console.log(id); for(let i=0; i<10; i++) { console.log(i); $("#id_form-" + i + "-quantity").keyup(function () { var rate = parseFloat($("#id_form-" + i + "-rate").val()); var quantity = parseFloat($("#id_form-" + i + "-quantity").val()); var discount = parseFloat($("#id_form-" + i + "-discount").val()); $("#id_form-" + i + "-amount").val(rate * quantity - discount); }); $("#id_form-" + i + "-rate").keyup(function () { var rate = parseFloat($("#id_form-" + i + "-rate").val()); var quantity = parseFloat($("#id_form-" + i + "-quantity").val()); var discount = parseFloat($("#id_form-" + i + "-discount").val()); $("#id_form-" + i + "-amount").val(rate * quantity - discount); }); $("#id_form-" + i + "-discount").keyup(function () { var rate = parseFloat($("#id_form-" + i + "-rate").val()); var quantity = parseFloat($("#id_form-" + i + "-quantity").val()); var discount = parseFloat($("#id_form-" + i + "-discount").val()); $("#id_form-" + i + "-amount").val(rate * quantity - discount); }); } </script>No necesita su código complicado. Solo necesito estas líneas:
<script> $(document).on('keyup',"input[id$='-quantity']",fn); $(document).on('keyup',"input[id$='-rate']",fn); $(document).on('keyup',"input[id$='-discount']",fn); function fn(){ var rate = parseFloat($(this).closest("#parent").find("input[id$='-rate']").val()); var quantity = parseFloat($(this).closest("#parent").find("input[id$='-quantity']").val()); var discount = parseFloat($(this).closest("#parent").find("input[id$='-discount']").val()); $(this).closest("#parent").find("input[id$='-amount']").val(rate * quantity - discount); }; </script> {% csrf_token %} {{ formset.management_form }} {% for form in formset %} <div id="parent"> {{ form.as_p }} </div> {% endfor %}