首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复选框未选中以添加值。

复选框未选中以添加值。
EN

Stack Overflow用户
提问于 2022-07-17 10:33:58
回答 2查看 100关注 0票数 1

我已经用javascripts创建了计算系统项目所有的事情都是很好的计算完美的税务包括,但当我点击复选框时它不包括,当我在输入字段中输入某物时它会添加,我希望在我点击复选框时,甚至当我键入某事时,值会发生变化

html

代码语言:javascript
复制
<div class="form-group row">
  <div class="col-sm-6">
    <input type="float" class="form-control form-control-user" id="BMS_qty" name="BMS_qty" placeholder="BMS Quantity">
    <input type="float" class="form-control form-control-user" id="BMS_price" name="BMS_price" placeholder="BMS Price">
  </div>
</div>

<div class="col-sm-6 form-check">
  <input type="checkbox" id="tax" name="taxamount" value="0.17">
  <label for="tax">Included Tax</label><br>

  <label for="total_expenses1" style="text-align: right;">Total:- </label>
  <span id="total_expenses1"></span>
</div>

javascript

代码语言:javascript
复制
$('input').keyup(function(){ // run anytime the value changes
  var BMS_qty  = Number($('#BMS_qty').val());
  var BMS_price = Number($('#BMS_price').val());
  if(document.getElementById("tax").checked) {
      var tax = 0.17;
  } else {
    tax = 0;
  }
  var subtotal = BMS_qty * BMS_price;
  var total = tax * subtotal;
  $('#total_expenses1').html(total + subtotal); // add them and output it
   // add them and output it
 }); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-17 10:58:56

问题是,只有在按下空间键以激活<input type="checkbox">时,<input type="checkbox">方法才会对其起作用。

为了避免这种问题,我建议切换代码以响应input事件(这涵盖了<input>值/状态更改的任何事件)。

解决这一问题的一种方法如下,其中包括解释性评论:

代码语言:javascript
复制
// we select all <input> elements regardless of their type attribute,
// and bind the anonymous function of the on() method as the event-handler
// for the 'input' event:
$('input').on('input', function() {

  // switching to the use of const to declare variables that shouldn't
  // change after they've been defined, and we use parseInt() instead
  // of Number() to convert those the entered-values into numbers
  // supplying the radix (base) argument of 10 because we're working
  // with base-10 numbers (this is largely a personal preference, I
  // don't think there's a particular argument for, or against, this
  // change):
  const BMS_qty = parseInt($('#BMS_qty').val(), 10),
    BMS_price = parseFloat($('#BMS_price').val()),
    // here we use a conditional (ternary) operator, in which we
    // assess - using the .is() method - whether the element with
    // the id of "tax" is checked.
    // If it is checked the value of tax is 0.17, if it is not
    // the value is 0:
    tax = $('#tax').is(':checked') ? 0.17 : 0;

  // using let to declare variables that may need to change if
  // the calculations/results need to be modified in production:
  let subtotal = BMS_qty * BMS_price,
    total = tax * subtotal;
  
  // adding the values, andd writing it the element with an
  // id equal to "total_expenses", though I've switched to using
  // the text() method to avoid accidentally trying to insert any
  // HTML elements in the future:
  $('#total_expenses1').text(total + subtotal);
});
代码语言:javascript
复制
<div class="form-group row">
  <div class="col-sm-6">
    <input type="float" class="form-control form-control-user" id="BMS_qty" name="BMS_qty" placeholder="BMS Quantity">
    <input type="float" class="form-control form-control-user" id="BMS_price" name="BMS_price" placeholder="BMS Price">
  </div>
</div>

<div class="col-sm-6 form-check">
  <input type="checkbox" id="tax" name="taxamount" value="0.17">
  <label for="tax">Included Tax</label><br>

  <label for="total_expenses1" style="text-align: right;">Total:- </label>
  <span id="total_expenses1"></span>
</div>

JS Fiddle演示

参考文献:

JavaScript:

票数 2
EN

Stack Overflow用户

发布于 2022-07-17 10:54:23

您需要使用关于()来获取所需的事件

我认为,您还需要用parseInt()来更改Number()

代码语言:javascript
复制
$(document).on('keyup keypress keydown change', 'input[name="BMS_qty"], input[name="BMS_price"], input[name="taxamount"]', function(){ // or keypress I have the same result
  var BMS_qty  = parseInt($('#BMS_qty').val());
  var BMS_price = parseInt($('#BMS_price').val());
  if(document.getElementById("tax").checked) {
      var tax = 0.17;
  } else {
    tax = 0;
  }
  var subtotal = BMS_qty * BMS_price;
  var total = tax * subtotal;
  $('#total_expenses1').html(total + subtotal); // add them and output it
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group row">
  <div class="col-sm-6">
    <input type="float" class="form-control form-control-user" id="BMS_qty" name="BMS_qty" placeholder="BMS Quantity">
    <input type="float" class="form-control form-control-user" id="BMS_price" name="BMS_price" placeholder="BMS Price">
  </div>
</div>
            
<div class="col-sm-6 form-check">
  <input type="checkbox" id="tax" name="taxamount" value="0.17">
  <label for="tax">Included Tax</label><br>
  
  <label for="total_expenses1" style="text-align: right;">Total:- </label>
  <span id="total_expenses1">0</span>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73011040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档