简体   繁体   中英

how to get multiple input values in django loop (template) using javascript?

I am trying to get the value of some input field in my django template, the form is in a loop eg {% for p in prediction %} {% endfor %} .

I have this simple line to grab the id from the input field let odds = document.getElementById("odds").value

Based on the fact that i have all these function in a django loop, am i not supposed to get all the odds when i console.log(odds)

{% for p in prediction.prediction_data.all %}
  <form action="#" method="POST">
     <input type="text" value="{{ p.odds }}" id="odds">
     <input type="number" value="" name="amount" id="amount" onkeyup="CalculateNewBalance()">

    <script>
      function CalculateNewBalance(){
          let odds = document.getElementById("odds").value
          let stake_amount_input = document.getElementById("amount")
                                                 
          console.log(odds);
    </script>
    </form>
{% endfor %}
[![enter image description here][1]][1]

在此处输入图像描述

Instead of using id use class or attribute becouse id is used to identify unique element in DOM . Also you don't have to put your script inside loop and instead of adding form inside loop put input fields.

Your final code will look like this

<form action="#" method="POST">
  {% for p in prediction.prediction_data.all %}
     <input type="text" value="{{ p.odds }}" class="odds">
     <input type="number" value="" name="amount" class="amount" onkeyup="CalculateNewBalance(event)">
  {% endfor %}
</form>

<script>
  function CalculateNewBalance(e){
      let t = e.target;
      let odds = t.previousElementSibling.value
      let stake_amount_input = t
      console.log(odds);
  }
</script>

Running code example

 function CalculateNewBalance(e){ let t = e.target; let odds = t.previousElementSibling.value let stake_amount_input = t console.log(odds); }
 <form action="#" method="POST"> <input type="text" value="1.0" class="odds"> <input type="number" value="" name="amount" class="amount" onkeyup="CalculateNewBalance(event)"> <input type="text" value="2.0" class="odds"> <input type="number" value="" name="amount" class="amount" onkeyup="CalculateNewBalance(event)"> <input type="text" value="3.0" class="odds"> <input type="number" value="" name="amount" class="amount" onkeyup="CalculateNewBalance(event)"> </form>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM