第一次按下javascript后,onkeyup无法正常工作

阿列克·斯蒂芬诺克(Alek Stephanok)

所以我有一些输入字段。因此,用户在此基础上键入数量,从而计算价格并显示总价。例如,如果一件商品的价格为$ 500,则2件商品的价格为500 * 2 = 1000(总价)。因此,每次用户按下键时我都希望输入。

该部分工作正常,但仅在第一次按键后才起作用,此后它不起作用。下面的代码我已经尝试过了。

<?php foreach ($offer_details as $key => $offer_detail) { 
  <input class="quantity" min="0" name="quantity" type="number" id="quantity-<?php echo $key; ?>" onkeyup="total_price(<?php echo $key; ?>)" max="<?php echo $units; ?>">
<?php }?>
<script type="text/javascript">
    function total_price(i){
      var quantity = parseInt(document.getElementById("quantity-" + i).value);
      if (isNaN(quantity)) {
            quantity = 0;
        }
        var sell_plants = $("#sell_plants").text();
        if (quantity >= sell_plants) {
            quantity = sell_plants;
        }
        $("#quantity-" + i).val(quantity);
        var price_per_one = $("#price_per_one").text();
        var base_currency_symbol = $("#base_currency_symbol").val();
        price_per_one = price_per_one.replace(base_currency_symbol, "");
        total_price = price_per_one * quantity;
        if(total_price == '' || typeof(total_price) == 'undefined' || isNaN(total_price)){
          total_price = 0;
        }
        $("#total_price-" + i).val(base_currency_symbol + ' ' + total_price);
    }
</script>

第二次按键后,上面的代码起作用,并且在控制台中显示的total_price的问题未定义。

任何帮助将不胜感激。提前致谢。

罗里·麦克罗森(Rory McCrossan)

问题是因为您声明了一个全局total_price变量,该变量重新分配了对该total_price()函数的引用

要解决此问题,请重命名该变量,例如:

var tp = price_per_one * quantity;
if (tp == '' || typeof(tp) == 'undefined' || isNaN(tp)) {
  tp = 0;
}
$("#total_price-" + i).val(base_currency_symbol + ' ' + tp);

请注意,您可以通过强制值来简化逻辑,也可以通过使用jQuery的遍历方法避免使用增量ID,如下所示:

$('.quantity').on('input change', function() {
  var $qty = $(this);
  var $row = $qty.closest('.row');
  var quantity = parseInt(this.value, 10) || 0;
  var sell_plants = parseInt($("#sell_plants").text(), 10) || 0;

  if (quantity >= sell_plants)
    quantity = sell_plants;

  $qty.val(quantity);

  var base_currency_symbol = $("#base_currency_symbol").val();
  var price_per_one = $row.find('.price_per_one').text().replace(base_currency_symbol, "");
  var total = (price_per_one * quantity) || 0;
  $row.find('.total').val(base_currency_symbol + ' ' + total.toFixed(2));
});
.price_per_one {
  width: 60px;
  display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sell_plants">5</div>
<input readonly type="text" id="base_currency_symbol" value="$" />

<br /><br />
<div class="row">
  <input class="quantity" min="0" name="quantity" type="number" max="100" />
  <span class="price_per_one">$2.50</span>
  <input type="text" readonly class="total" />
</div>
<div class="row">
  <input class="quantity" min="0" name="quantity" type="number" max="100" />
  <span class="price_per_one">$5.00</span>
  <input type="text" readonly class="total" />
</div>
<div class="row">
  <input class="quantity" min="0" name="quantity" type="number" max="100" />
  <span class="price_per_one">$12.50</span>
  <input type="text" readonly class="total" />
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mysql 在第一次后工作正常

来自分类Dev

第一次悬停后,悬停效果无法在每个元素上正常工作

来自分类Dev

如果单击函数中的语句在第一次单击后无法按预期工作

来自分类Dev

会话已设置,但在第一次进入另一个页面后无法正常工作

来自分类Dev

单击第一次返回浏览器后无法使Iron路由器正常工作

来自分类Dev

jQuery在第一次单击时无法正常工作,但在提琴时确实如此

来自分类Dev

第一次点击时,Android onclicklistener无法正常工作

来自分类Dev

第一次调用后BlockUI无法正常工作

来自分类Dev

第一次在iPad中单击按钮无法正常工作

来自分类Dev

awk getline在第一次循环迭代中无法按预期工作

来自分类Dev

Javascript-动画仅在第一次按下按钮时起作用

来自分类Dev

第一次后无法更改窗口大小

来自分类Dev

第一次循环后无法发送邮件

来自分类Dev

第一次后无法点击链接

来自分类Dev

重新加载页面后,Gif无法正常工作。仅在第一次打开窗口时有效

来自分类Dev

在onKeyup AJAX呼叫中,第一次或返回时无法使用

来自分类Dev

XMLHttpRequest,使用多个以上将无法正常工作,只是第一次使用。需要使用多个

来自分类Dev

sed命令,仅在第一次出现后才添加特定工作后的文本

来自分类Dev

为什么我的循环只能在第一次迭代中正常工作?

来自分类Dev

jQuery函数只能在第一次单击时正常工作

来自分类Dev

应用程序内购买第一次使用沙箱失败,下次工作正常

来自分类Dev

无法调用$ stateProvider,两次更新视图(它仅在第一次工作)

来自分类Dev

onTouchListener切换按钮,忽略第一次按下?

来自分类Dev

第一次按下按钮时在android中关闭警报对话框

来自分类Dev

jQuery的:按键不能在第一次按下

来自分类Dev

onTouchListener切换按钮,忽略第一次按下?

来自分类Dev

如何使在文档打开时按下的功能区切换按钮在第一次切换时正常运行?

来自分类Dev

Foreach 循环在第一次迭代后停止工作

来自分类Dev

我的 PyCFunction 第一次工作,但在连续迭代后导致段错误

Related 相关文章

  1. 1

    mysql 在第一次后工作正常

  2. 2

    第一次悬停后,悬停效果无法在每个元素上正常工作

  3. 3

    如果单击函数中的语句在第一次单击后无法按预期工作

  4. 4

    会话已设置,但在第一次进入另一个页面后无法正常工作

  5. 5

    单击第一次返回浏览器后无法使Iron路由器正常工作

  6. 6

    jQuery在第一次单击时无法正常工作,但在提琴时确实如此

  7. 7

    第一次点击时,Android onclicklistener无法正常工作

  8. 8

    第一次调用后BlockUI无法正常工作

  9. 9

    第一次在iPad中单击按钮无法正常工作

  10. 10

    awk getline在第一次循环迭代中无法按预期工作

  11. 11

    Javascript-动画仅在第一次按下按钮时起作用

  12. 12

    第一次后无法更改窗口大小

  13. 13

    第一次循环后无法发送邮件

  14. 14

    第一次后无法点击链接

  15. 15

    重新加载页面后,Gif无法正常工作。仅在第一次打开窗口时有效

  16. 16

    在onKeyup AJAX呼叫中,第一次或返回时无法使用

  17. 17

    XMLHttpRequest,使用多个以上将无法正常工作,只是第一次使用。需要使用多个

  18. 18

    sed命令,仅在第一次出现后才添加特定工作后的文本

  19. 19

    为什么我的循环只能在第一次迭代中正常工作?

  20. 20

    jQuery函数只能在第一次单击时正常工作

  21. 21

    应用程序内购买第一次使用沙箱失败,下次工作正常

  22. 22

    无法调用$ stateProvider,两次更新视图(它仅在第一次工作)

  23. 23

    onTouchListener切换按钮,忽略第一次按下?

  24. 24

    第一次按下按钮时在android中关闭警报对话框

  25. 25

    jQuery的:按键不能在第一次按下

  26. 26

    onTouchListener切换按钮,忽略第一次按下?

  27. 27

    如何使在文档打开时按下的功能区切换按钮在第一次切换时正常运行?

  28. 28

    Foreach 循环在第一次迭代后停止工作

  29. 29

    我的 PyCFunction 第一次工作,但在连续迭代后导致段错误

热门标签

归档