在javascript中第一次按键后onkeyup不工作
所以我有一些输入字段。因此,用户输入数量,我计算价格并显示总价。例如,如果一个项目的成本为500美元,那么两个项目的成本为500*2=1000总价。所以每次用户按下一个键时我都需要输入 该部件工作正常,但只在第一次按键时工作,之后就不工作了。下面的代码我已经试过了在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"
<?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