【问题标题】:price times quantity output jquery价格乘以数量输出jquery
【发布时间】:2019-12-02 21:19:18
【问题描述】:

有没有办法让我通过数量来显示价格&当我在输入文本中输入一个数字时,例如我点击 + 按钮然后它变为 2 数量然后价格将自动计算为 x2 这是我的减号和加号及其输入类型文本的 js 代码

我的输入文本

$(".input-number").keydown(function (e) {
        // Allow: backspace, delete, tab, escape, enter and .
        if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190]) !== -1 ||
             // Allow: Ctrl+A
            (e.keyCode == 65 && e.ctrlKey === true) || 
             // Allow: home, end, left, right
            (e.keyCode >= 35 && e.keyCode <= 39)) {
                 // let it happen, don't do anything
                 return;
        }
        // Ensure that it is a number and stop the keypress
        if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
            e.preventDefault();
        }
    });

这里是html代码和js

我想在我的 &lt;h3 class&gt;Total : &lt;/h3

$('.btn-number').click(function(e) {
  e.preventDefault();

  fieldName = $(this).attr('data-field');
  type = $(this).attr('data-type');
  var input = $("input[name='" + fieldName + "']");
  var currentVal = parseInt(input.val());
  if (!isNaN(currentVal)) {
    if (type == 'minus') {

      if (currentVal > input.attr('min')) {
        input.val(currentVal - 1).change();
      }
      if (parseInt(input.val()) == input.attr('min')) {
        //$(this).attr('disabled', true);
      }

    } else if (type == 'plus') {

      if (currentVal < input.attr('max')) {
        input.val(currentVal + 1).change();
      }
      if (parseInt(input.val()) == input.attr('max')) {
        // $(this).attr('disabled', true);
      }

    }
  } else {
    input.val(0);
  }
});
$('.input-number').focusin(function() {
  $(this).data('oldValue', $(this).val());
});
$('.input-number').change(function() {

  minValue = parseInt($(this).attr('min'));
  maxValue = parseInt($(this).attr('max'));
  valueCurrent = parseInt($(this).val());

  name = $(this).attr('name');
  if (valueCurrent >= minValue) {
    $(".btn-number[data-type='minus'][data-field='" + name + "']").removeAttr('disabled')
  } else {
    alert('Sorry, the minimum value was reached');
    $(this).val($(this).data('oldValue'));
  }
  if (valueCurrent <= maxValue) {
    $(".btn-number[data-type='plus'][data-field='" + name + "']").removeAttr('disabled')
  } else {
    alert('Sorry, the maximum value was reached');
    $(this).val($(this).data('oldValue'));
  }


});
$(".input-number").keydown(function(e) {
  // Allow: backspace, delete, tab, escape, enter and .
  if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190]) !== -1 ||
    // Allow: Ctrl+A
    (e.keyCode == 65 && e.ctrlKey === true) ||
    // Allow: home, end, left, right
    (e.keyCode >= 35 && e.keyCode <= 39)) {
    // let it happen, don't do anything
    return;
  }
  // Ensure that it is a number and stop the keypress
  if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
    e.preventDefault();
  }
});
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="input-group col-xs-2">
  <span class="input-group-btn">
              <button type="button" class="btn btn-danger  btn-number"  data-type="minus" data-field="quant[2]">
                <span class="fa fa-minus"></span>
  </button>
  </span>
  <input type="text" name="quant[2]" class="form-control input-number" value="1" min="1" max="10">
  <span class="input-group-btn">
              <button type="button" class="btn btn-success  btn-number" data-type="plus" data-field="quant[2]">
                  <span class="fa fa-plus"></span>
  </button>
  </span>
</div>
<h3 class="bookingroom">Total: PHP 2,750.00</h3>

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    将此行添加到您的代码中(带有静态价格)以供参考,其余需要您自己做。

    $("#amount").text(2750 * valueCurrent);
    

    $('.btn-number').click(function(e) {
      debugger
      e.preventDefault();
    
      fieldName = $(this).attr('data-field');
      type = $(this).attr('data-type');
      var input = $("input[name='" + fieldName + "']");
      var currentVal = parseInt(input.val());
      if (!isNaN(currentVal)) {
        if (type == 'minus') {
    
          if (currentVal > input.attr('min')) {
            input.val(currentVal - 1).change();
          }
          if (parseInt(input.val()) == input.attr('min')) {
            //$(this).attr('disabled', true);
          }
    
        } else if (type == 'plus') {
    
          if (currentVal < input.attr('max')) {
            input.val(currentVal + 1).change();
          }
          if (parseInt(input.val()) == input.attr('max')) {
            // $(this).attr('disabled', true);
          }
    
        }
      } else {
        input.val(0);
      }
    });
    $('.input-number').focusin(function() {
      $(this).data('oldValue', $(this).val());
    });
    $('.input-number').change(function() {
    
      minValue = parseInt($(this).attr('min'));
      maxValue = parseInt($(this).attr('max'));
      valueCurrent = parseInt($(this).val());
    
      name = $(this).attr('name');
      if (valueCurrent >= minValue) {
        $(".btn-number[data-type='minus'][data-field='" + name + "']").removeAttr('disabled')
      } else {
        alert('Sorry, the minimum value was reached');
        $(this).val($(this).data('oldValue'));
      }
      if (valueCurrent <= maxValue) {
        $(".btn-number[data-type='plus'][data-field='" + name + "']").removeAttr('disabled')
      } else {
        alert('Sorry, the maximum value was reached');
        $(this).val($(this).data('oldValue'));
      }
    
      $("#amount").text(2750 * valueCurrent);
    
    
    
    });
    $(".input-number").keydown(function(e) {
      // Allow: backspace, delete, tab, escape, enter and .
      if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190]) !== -1 ||
        // Allow: Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) ||
        // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
        // let it happen, don't do anything
        return;
      }
      // Ensure that it is a number and stop the keypress
      if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
      }
    });
    <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="input-group col-xs-2">
      <span class="input-group-btn">
                  <button type="button" class="btn btn-danger  btn-number"  data-type="minus" data-field="quant[2]">
                    <span class="fa fa-minus"></span>
      </button>
      </span>
      <input type="text" name="quant[2]" class="form-control input-number" value="1" min="1" max="10">
      <span class="input-group-btn">
      <button type="button" class="btn btn-success  btn-number" data-type="plus" data-field="quant[2]"><span class="fa fa-plus"></span></button>
      </span>
    </div>
    
    
    <h3 class="bookingroom">Total: PHP <span id="amount">2,750.00</span></h3>

    【讨论】:

    • 先生,我怎样才能添加像“Total:”这样的文字,然后是 + 价格,然后是另一个像“$”这样的文字 - 货币符号
    • 一种方法是在 h3 中添加一个 span 元素并更改 span 的值。
    • @JedJamir 我已将金额包装到span#amount,并将数据绑定到它。
    • 如果我在输入文本中输入一个数字,它会显示计算的价格,但如果我点击 + 和 - 按钮,它不会计算价格,知道为什么吗?
    • 在我的回答中它正在工作,是否已将其复制到您的代码中?
    【解决方案2】:

    请检查这个。

    $('.btn-number').click(function(e) {      
    
      fieldName = $(this).attr('data-field');
      type = $(this).attr('data-type');
      var input = $("input[name='" + fieldName + "']");
      var currentVal = parseInt(input.val());
      if (!isNaN(currentVal)) {
        if (type == 'minus') {
    
          if (currentVal > input.attr('min')) {
            input.val(currentVal - 1).change();
          }
          if (parseInt(input.val()) == input.attr('min')) {
            //$(this).attr('disabled', true);
          }
    
        } else if (type == 'plus') {
    
          if (currentVal < input.attr('max')) {
            input.val(currentVal + 1).change();
          }
          if (parseInt(input.val()) == input.attr('max')) {
            // $(this).attr('disabled', true);
          }
    
        }
      } else {
        input.val(0);
      }
    });
    $('.input-number').focusin(function() {
      $(this).data('oldValue', $(this).val());
    });
    $('.input-number').change(function() {
    
      minValue = parseInt($(this).attr('min'));
      maxValue = parseInt($(this).attr('max'));
      valueCurrent = parseInt($(this).val());
    
      name = $(this).attr('name');
      if (valueCurrent >= minValue) {
        $(".btn-number[data-type='minus'][data-field='" + name + "']").removeAttr('disabled')
      } else {
        alert('Sorry, the minimum value was reached');
        $(this).val($(this).data('oldValue'));
      }
      if (valueCurrent <= maxValue) {
        $(".btn-number[data-type='plus'][data-field='" + name + "']").removeAttr('disabled')
      } else {
        alert('Sorry, the maximum value was reached');
        $(this).val($(this).data('oldValue'));
      }
         
      $(".bookingroom").text("Total: PHP "+parseInt((2750 * valueCurrent)).toFixed(2));
    
    
    
    });
    $(".input-number").keydown(function(e) {
      // Allow: backspace, delete, tab, escape, enter and .
      if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190]) !== -1 ||
        // Allow: Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) ||
        // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
        // let it happen, don't do anything
        return;
      }
      // Ensure that it is a number and stop the keypress
      if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
      }
    });
    <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="input-group col-xs-2">
      <span class="input-group-btn">
                  <button type="button" class="btn btn-danger  btn-number"  data-type="minus" data-field="quant[2]">
                    <span class="fa fa-minus"></span>
      </button>
      </span>
      <input type="text" name="quant[2]" class="form-control input-number" value="1" min="1" max="10">
      <span class="input-group-btn">
                  <button type="button" class="btn btn-success  btn-number" data-type="plus" data-field="quant[2]">
                      <span class="fa fa-plus"></span>
      </button>
      </span>
    </div>
    
    
    <h3 class="bookingroom">Total: PHP 2,750.00</h3>

    【讨论】:

    • 在我的网站上没有显示计算出的价格,知道为什么吗?
    • 请在控制台中检查可能是您的代码或库文件未匹配中出现错误。
    • 我已经检查了三次,但没有出现价格。是因为我的输入文本和 + - 按钮在手风琴内吗?
    • 首先点击名为alert的按钮或用于测试的东西
    • 哦,如果我在输入文本中输入一个数字,它会显示计算的价格,但如果我点击 + 和 - 按钮,它不会计算价格
    猜你喜欢
    • 1970-01-01
    • 2023-01-18
    • 2012-05-16
    • 2021-11-29
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    相关资源
    最近更新 更多