【问题标题】:How to change text of span from two different checkbox values如何从两个不同的复选框值更改跨度文本
【发布时间】:2019-06-10 20:44:36
【问题描述】:

尝试将各种价格乘以乘数(天数)相加,我的函数适用于 100 公里,但在更改为 200 公里时不会产生任何结果,其中 100 公里是 R125/天,200 公里是 R225/天.这些以每日和总计的跨度表示,daily being the sum of extra's + 100kmsTotal being = multiplier * extras + multiplier * 100kms

我已经在一些建议的帮助下重写了我的脚本,但遇到了另一个问题,即要显示第二个值,即 200km 值。我的小提琴在这里:https://jsfiddle.net/shiataz12/mjnqth3L/169/

我想过尝试这样的事情:

$("#qr1").click(function() {
displayVals1();
});
$("#qr2").click(function() {
displayVals2();
});

当 200kms 复选框被选中作为基准值时,尝试将 R225/天和 R1125/天作为值。

【问题讨论】:

  • 编程不是复制粘贴代码。您的整个 JavaScript 逻辑可以在不超过 30 行代码中完成。了解 DRY 原则。
  • 我会研究一下,我对 Jquery 还很陌生,还没有深入研究使用其他让生活更轻松的功能。不过谢谢。

标签: jquery syntax add multiplication


【解决方案1】:

因为我手头有时间,所以我将您的代码减少到大约 15 行。

注意,所有输入的变化都由一个函数处理,每次只重做所有数学运算。

$(function() {
  $("input.kilo").change(function() {
    $("input.kilo").not(this).prop("checked", false);
  });
  $("input, select").change(function() {
    //get the values of the selected options
    let v = $.map($("input[id^='qr']:checked"), function(i) {
      return parseFloat($(i).val());
    });
    let s = v.reduce((a, b) => a + b); //sum them up to a daily total
    console.log(v);
    $("#userdaily").text(s);
    $("#usertotal").text(s * parseFloat($("#mySelect>option:selected").val()));
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="mySelect">No. Days</label>
<select name="mySelect" id="mySelect">
  <option name="one" value="1">1</option>
  <option name="two" value="2">2</option>
  <option name="three" value="3">3</option>
  <option name="four" value="4">4</option>
  <option name="five" value="5" selected>5</option>
</select><br><br>
<label for="checkbox1">100kms</label>
<input type="checkbox" name="checkbox1" class="kilo" value="125" id="qr1" checked><br><br>
<label for="checkbox2">200kms</label>
<input type="checkbox" name="checkbox2" class="kilo" value="225" id="qr2"><br><br>
<label for="checkbox3">Tyre</label>
<input type="checkbox" name="checkbox3" value="20" id="qr3"><br><br>
<label for="checkbox4">Glass</label>
<input type="checkbox" name="checkbox4" value="20" id="qr4"><br><br>
<label for="checkbox5">General</label>
<input type="checkbox" name="checkbox5" value="60" id="qr5" checked><br><br>
<label for="checkbox6">Third Party</label>
<input type="checkbox" name="checkbox6" value="80" id="qr6"><br><br> Daily :<span id="userdaily"> </span><br><br> Total :<span id="usertotal"> </span><br><br>
<input tyep="text" id="pricef1" name="pricef1" value="">
<input tyep="text" id="pricef2" name="pricef2" value="">

【讨论】:

  • 谢谢,这很有见地,我会考虑在将值加在一起时使我的逻辑更短。
猜你喜欢
  • 1970-01-01
  • 2011-12-31
  • 2019-10-30
  • 2012-03-10
  • 2018-02-05
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多