更新文本字段的 keyup 值
Update on keyup value of a text field
我有以下代码:
{% for product in app.session.get('aBasket') %}
<input id="product_quantity_{{ product['product_id'] }}" class="form-control quantity" type="text" value="{{ product['product_quantity'] }}" name="" onkeyup="calculatePrice({{ product['product_price'] }},{{ product['product_id'] }})">
<span id="total_price_{{ product['product_id'] }}">{{ product['product_quantity'] * product['product_price'] }}</span>
{%endfor}
<div id="total_price_basket">TOTAL:0</div>
还有我的 js 函数:
<script type="application/javascript">
function calculatePrice(price, product_id) {
var x = document.getElementById("product_quantity_"+product_id);
var total_price = price * x.value;
$("#total_price_"+product_id).html(total_price);
$("#total_price_basket").html();
}
</script>
所以,所有产品的价格都很好,问题是如何更改 div>total_price_basket onkeyup 的值?我必须收集每种产品的数量。你能帮我吗?提前致谢
最初,在呈现页面时,将 total_price_basket 设置为来自服务器的值。
在你的 javascript 中设置一个全局变量来存储所有产品的总和:
var sum = 0;
然后在您的 calculatePrice
方法中附加这两行:
sum += total_price;
$("#total_price_basket").html('TOTAL: ' + sum);
当产品被移除时也做减法。
<script type="application/javascript">
var sum = 0;
function calculatePrice(price, product_id) {
var x = document.getElementById("product_quantity_"+product_id);
var total_price = price * x.value;
$("#total_price_"+product_id).html(total_price);
sum += total_price;
$("#total_price_basket").html('TOTAL: ' + sum);
}
</script>
使用parseFloat
将string
转换为float
:
The parseFloat() function parses a string argument and returns a floating point number.
查看内联评论:
var total_price = 0; // Set default to zero
// ^^^^^^^^^^^^^^^^^
function calculatePrice(price, product_id) {
var x = document.getElementById("product_quantity_" + product_id);
var total_price = parseFloat(price) * parseFloat(x.value);
// ^^^^^^^^^^ ^^^^^^^^^^
$("#total_price_" + product_id).html(total_price);
$("#total_price_basket").html();
}
你可以试试这个:
$(function(){
var price=100;
$('input.quantity').keyup(function(){
var all=$('input.quantity');
var total=0;
for(var i=0;i<all.length;i++){
if(!isNaN(all[i].value)){
total+=price*all[i].value
}
}
$("#total_price_"+product_id).html('TOTAL : '+total);
});
});
我会利用 jQuery 并摆脱干扰性的内联事件处理程序。为此 HTML 标记将稍作更改以使用数据属性:
{% for product in app.session.get('aBasket') %}
<input data-id="{{ product['product_id'] }}"
data-price="{{ product['product_price'] }}"
value="{{ product['product_quantity'] }}"
class="form-control quantity" type="text">
<span class="total" id="total_price_{{ product['product_id'] }}">{{ product['product_quantity'] * product['product_price'] }}</span>
{%endfor}
<div id="total_price_basket">TOTAL:0</div>
JS:
$('.quantity').on('keyup', function () {
// Update individual price
var price = $(this).data('price') * this.value;
$('#total_price_' + $(this).data('id')).text(price);
// Update total
var total = 0;
$('.total').each(function() {
total += Number($(this).text());
});
$('#total_price_basket').text('TOTAL: ' + total);
})
// Trigger initial calculation if needed
.trigger('keyup');
试试这个
var x = document.getElementById("product_quantity_"+product_id);
var total_price = price * x.value;
console.log(x.value);
我有以下代码:
{% for product in app.session.get('aBasket') %}
<input id="product_quantity_{{ product['product_id'] }}" class="form-control quantity" type="text" value="{{ product['product_quantity'] }}" name="" onkeyup="calculatePrice({{ product['product_price'] }},{{ product['product_id'] }})">
<span id="total_price_{{ product['product_id'] }}">{{ product['product_quantity'] * product['product_price'] }}</span>
{%endfor}
<div id="total_price_basket">TOTAL:0</div>
还有我的 js 函数:
<script type="application/javascript">
function calculatePrice(price, product_id) {
var x = document.getElementById("product_quantity_"+product_id);
var total_price = price * x.value;
$("#total_price_"+product_id).html(total_price);
$("#total_price_basket").html();
}
</script>
所以,所有产品的价格都很好,问题是如何更改 div>total_price_basket onkeyup 的值?我必须收集每种产品的数量。你能帮我吗?提前致谢
最初,在呈现页面时,将 total_price_basket 设置为来自服务器的值。 在你的 javascript 中设置一个全局变量来存储所有产品的总和:
var sum = 0;
然后在您的 calculatePrice
方法中附加这两行:
sum += total_price;
$("#total_price_basket").html('TOTAL: ' + sum);
当产品被移除时也做减法。
<script type="application/javascript">
var sum = 0;
function calculatePrice(price, product_id) {
var x = document.getElementById("product_quantity_"+product_id);
var total_price = price * x.value;
$("#total_price_"+product_id).html(total_price);
sum += total_price;
$("#total_price_basket").html('TOTAL: ' + sum);
}
</script>
使用parseFloat
将string
转换为float
:
The parseFloat() function parses a string argument and returns a floating point number.
查看内联评论:
var total_price = 0; // Set default to zero
// ^^^^^^^^^^^^^^^^^
function calculatePrice(price, product_id) {
var x = document.getElementById("product_quantity_" + product_id);
var total_price = parseFloat(price) * parseFloat(x.value);
// ^^^^^^^^^^ ^^^^^^^^^^
$("#total_price_" + product_id).html(total_price);
$("#total_price_basket").html();
}
你可以试试这个:
$(function(){
var price=100;
$('input.quantity').keyup(function(){
var all=$('input.quantity');
var total=0;
for(var i=0;i<all.length;i++){
if(!isNaN(all[i].value)){
total+=price*all[i].value
}
}
$("#total_price_"+product_id).html('TOTAL : '+total);
});
});
我会利用 jQuery 并摆脱干扰性的内联事件处理程序。为此 HTML 标记将稍作更改以使用数据属性:
{% for product in app.session.get('aBasket') %}
<input data-id="{{ product['product_id'] }}"
data-price="{{ product['product_price'] }}"
value="{{ product['product_quantity'] }}"
class="form-control quantity" type="text">
<span class="total" id="total_price_{{ product['product_id'] }}">{{ product['product_quantity'] * product['product_price'] }}</span>
{%endfor}
<div id="total_price_basket">TOTAL:0</div>
JS:
$('.quantity').on('keyup', function () {
// Update individual price
var price = $(this).data('price') * this.value;
$('#total_price_' + $(this).data('id')).text(price);
// Update total
var total = 0;
$('.total').each(function() {
total += Number($(this).text());
});
$('#total_price_basket').text('TOTAL: ' + total);
})
// Trigger initial calculation if needed
.trigger('keyup');
试试这个
var x = document.getElementById("product_quantity_"+product_id);
var total_price = price * x.value;
console.log(x.value);