【问题标题】:I want the data of the same row whose check box is checked. My table row is in for loop我想要选中复选框的同一行的数据。我的表格行在 for 循环中
【发布时间】:2021-03-13 09:59:24
【问题描述】:

我想要我将单击其复选框的同一行的数据。我的表格行在 for 循环中 我想在最后显示总价,但它显示所有框。 我在视图中按名称取值,但这里我的表单组件处于 for 循环中,所以如果数据不存在,它不应该出现。

这是我的 index.html

    {% for j in package %}
        <tr class="valid-container">
            <td style="cursor:pointer;">
               <input type="checkbox" name="c1" >&nbsp; {{ j.visa_type }}
            </td>

           <td height="52">
                <select class="custom-select processing_type" name="processing_type" data-id="{{ j.id }}" required>
                    <option value="{{ j.price }}" selected>Normal</option>
                    <option value="{{ j.express_price }}">Express</option>
                </select>
           </td>

          <td height="52">
            <select class="custom-select no_of_person" name="no_of_person" data-id="{{ j.id }}" required>
                <option value="1" selected>1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
            </select>

         </td>

         <td width="190" height="60">
            <div class="input-group date" data-date-format="dd.mm.yyyy">
                <div class="input-group mb-2">
                    <input  type="text" class="form-control" name="travel_date" id="date" placeholder="dd.mm.yyyy">
                        <div class="input-group-text"><i class="ti-calendar"></i></div>
                            <div class="input-group-addon">
                            </div>
                                <div class="input-group-prepend">
                                </div>
                </div>
            </div>

        </td>
        <td>{{ j.currency_type }}&nbsp;&nbsp; <output name="result" class="package_price">{{ j.price }}</output>.00</td>

                                </tr>
                    {% endfor %}

这是我的 package.js

$('.valid-container').ready(function() {

var date = $(this).find('#date').attr('required',true);

  $('select').on('change', function() {
    var id = $(this).data("id");
    var total = $('select[name=processing_type]').val() * $('select[name=no_of_person]').val();
    var price = $(this).find('.package_price').text();

  });

});

【问题讨论】:

  • 您不应该在循环的 html 模板中使用静态 id,因为 id 不再是唯一的,这可能/确实会弄乱选择器。
  • 嗨,您的代码中的package_price 在哪里?另外,你需要在哪里获得最后的总数td
  • 好的,我会删除它,但如果你有解决方案,请告诉我,因为我从昨天开始就被困在里面了
  • 哦,对不起,我必须编辑问题等待
  • @swati 看到我在最后一个问题中添加了 package_price 类,请帮助我

标签: javascript python jquery django django-templates


【解决方案1】:

您可以使用$(this).closest("tr") 获取最接近的 tr,然后只需使用.find() 从选择中获取所需的值,然后使用.text() 将总值添加到package_price

演示代码(带有虚拟值):

//on change of select or checkbox
$('select ,input[type=checkbox] ').on('change', function() {
  var selector = $(this).closest("tr")//get closest tr
  //if checkbox is checked
  if (selector.find("input[type=checkbox]").is(":checked")) {
  //get select valus
    var prcs_type = selector.find("select[name=processing_type]").val();
    var no_person = selector.find("select[name=no_of_person]").val();
    var total = prcs_type * no_person;
    selector.find(".package_price").text(total)//add value to package_prcie.
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<table>
  <tr class="valid-container">
    <td style="cursor:pointer;">
      <input type="checkbox" name="c1" id="c1">1
    </td>

    <td height="52">
      <select class="custom-select processing_type" name="processing_type" data-id="1" required>
        <option value="19" selected>Normal</option>
        <option value="20">Express</option>
      </select>
    </td>

    <td height="52">
      <select class="custom-select no_of_person" name="no_of_person" data-id="1" required>
        <option value="1" selected>1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
        <option value="10">10</option>
      </select>

    </td>

    <td width="190" height="60">
      <div class="input-group date" data-date-format="dd.mm.yyyy">
        <div class="input-group mb-2">
          <input type="text" class="form-control" name="travel_date" id="date" placeholder="dd.mm.yyyy">
          <div class="input-group-text"><i class="ti-calendar"></i></div>
          <div class="input-group-addon">
          </div>
          <div class="input-group-prepend">
          </div>
        </div>
      </div>

    </td>
    <td>{{ j.currency_type }}&nbsp;&nbsp; <output name="result" class="package_price">{{ j.price }}</output>.00</td>

  </tr>
  <tr class="valid-container">
    <td style="cursor:pointer;">
      <input type="checkbox" name="c1" id="c1">2
    </td>

    <td height="52">
      <select class="custom-select processing_type" name="processing_type" data-id="2" required>
        <option value="19" selected>Normal</option>
        <option value="20">Express</option>
      </select>
    </td>

    <td height="52">
      <select class="custom-select no_of_person" name="no_of_person" data-id="2" required>
        <option value="1" selected>1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
        <option value="10">10</option>
      </select>

    </td>

    <td width="190" height="60">
      <div class="input-group date" data-date-format="dd.mm.yyyy">
        <div class="input-group mb-2">
          <input type="text" class="form-control" name="travel_date" id="date" placeholder="dd.mm.yyyy">
          <div class="input-group-text"><i class="ti-calendar"></i></div>
          <div class="input-group-addon">
          </div>
          <div class="input-group-prepend">
          </div>
        </div>
      </div>

    </td>
    <td>{{ j.currency_type }}&nbsp;&nbsp; <output name="result" class="package_price">{{ j.price }}</output>.00</td>

  </tr>

</table>

【讨论】:

  • 其实我不得不变成这样raynatours.com/dubai-visa.aspx 但是如果你给出任何与之相关的解决方案它也会起作用,它会更好。感谢您的宝贵时间
  • 你能指出区别吗?上面的代码你不想要什么?
  • 不,一切都很好,只是当您单击复选框时,没有它只会发生值更改。想在这个网站上 raynatours.com/dubai-visa.aspx
  • 但是你发给我的这段代码,我对此非常满意,我从昨天开始就在尝试,但我没有得到正确的值。谢谢
  • 那么,当复选框被点击时,你不需要改变值吗?如果是,只需从选择器中删除input[type=checkbox],如果您不想检查checked 复选框的条件,也请删除if-statement
猜你喜欢
  • 2019-12-29
  • 2021-01-25
  • 2015-08-22
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
相关资源
最近更新 更多