Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中第一次按键后onkeyup不工作_Javascript_Jquery_Html - Fatal编程技术网

在javascript中第一次按键后onkeyup不工作

在javascript中第一次按键后onkeyup不工作,javascript,jquery,html,Javascript,Jquery,Html,所以我有一些输入字段。因此,用户输入数量,我计算价格并显示总价。例如,如果一个项目的成本为500美元,那么两个项目的成本为500*2=1000总价。所以每次用户按下一个键时我都需要输入 该部件工作正常,但只在第一次按键时工作,之后就不工作了。下面的代码我已经试过了 <?php foreach ($offer_details as $key => $offer_detail) { <input class="quantity" min="0" name="quantity"

所以我有一些输入字段。因此,用户输入数量,我计算价格并显示总价。例如,如果一个项目的成本为500美元,那么两个项目的成本为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>
第二次按键后出现问题,则上述代码正常工作,控制台显示未定义总价


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

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

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

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'。在“输入更改”上,函数{ var$qty=$this; 变量$row=$qty.COMESTEST'.row'; 变量数量=parseIntthis.value,10 | | 0; var sell_plants=parseInt$sell_plants.text,10 | | 0; 如果数量>=出售工厂 数量=出售植物; $qty.valquantity; var base_currency_symbol=$base_currency_symbol.val; var price_per_one=$row.find'.price_per_one'.text.replacebase_currency_symbol; var总计=每件的价格*数量| 0; $row.find'.total'.valbase_currency_symbol+''+total.toFixed2; }; .每件的价格{ 宽度:60px; 显示:内联块; } 5. $2.50 $5.00 $12.50