动态调整使用单选按钮的订单表总价

2 投票
2 回答
1131 浏览
提问于 2025-04-17 00:25

我正在尝试使用Django/Python和JavaScript动态计算订单的总价。

我使用了单选按钮,这些按钮有预设的值,显示的内容取决于当前有哪些产品有库存,以及其他商品的支持情况。

举个例子:如果主板支持最大8GB的内存,就会显示4个单选按钮,分别是2GB、4GB、6GB和8GB。

这是我目前为这个输入字段设计的模板:

{% for ram in orderData.ram %}

<div class="field"><input id="ram{{forloop.counter}}" name="ram" type="radio" class="ram" value="{{ ram.id }}" price="{{ ram.price }}"{% ifequal ram.default 1 %} checked {% endifequal %}/><label>{{ ram.title }}</label> {% ifnotequal ram.price 0 %}<span class="price">add ${{ ram.price }}</span>{% endifnotequal %}</div>

{% endfor %}

我最开始打算用一个“价格”属性来存储价格,但现在的问题是,每当我选择不同的单选按钮时,它只显示第一个输入的价格。有没有办法解决这个问题?我尝试添加一个唯一的ID字段,但它仍然只抓取第一个单选按钮的值,这让这个字段几乎没用。

JavaScript/jQuery:

$("input").change(function(){

var id = $(".ram").attr("id");
alert(id);
alert($("#"+id).attr("price"));


});

我已经花了将近两个小时在想办法解决这个问题,但一直没头绪。任何帮助都非常感谢。

** 编辑 **

总结一下问题……我该如何只获取当前选中的单选按钮的价格。

2 个回答

2

var id = $(".ram") 这行代码会把所有带有这个类名的元素放到一个数组里。

接下来,这段代码会逐个处理这些元素。

$(".ram").each(function() {
     alert($(this).attr("price"))
})

你可以通过索引来单独访问它们,像这样:

for(var x=0;x<$(".ram").length;x++) {
    alert($(".ram").eq(x))
}

被选中的单选按钮是:

$('.ram:checked').attr("price")
2

给你来了:

$(function() {
    $('input[name="ram"]').change(function() {
        var id = $(this).val(); // currently selected value
        var price = $('input[name="ram"][value="'+id+'"]').attr('price');
    });
});

撰写回答