我想动态更新应该显示所选期权价格的跨度内容。 PS:我正在使用Django + Python生成选项
这是我的代码:
<select class="form-control" id="materials">
{% for material2 in materials %}
<option value="{{ material2.name }}" data-price="{{ material2.price }}">{{ material2.name }} + <span id="material_price">{{ material2.price }}€</span></option>
{% endfor %}
</select>
<span id="price_material"></span>
这是我尝试过的:
var material = document.getElementById("materials")
material.onchange = function() {
var txt = document.getElementById("#material_price").value;
document.getElementById("price_material").innerText = txt
如果您知道答案,请帮助我。
答案 0 :(得分:1)
首先请注意,option
中不能包含元素,因此需要删除span
。
您当前的逻辑也正在从value
元素中读取select
。相反,您需要从选定的data-price
元素中读取option
。
您可以通过访问options
的{{1}}数组以在select
处检索元素,然后将其读取为selectedIndex
来实现。试试这个:
dataset.price
var priceMaterial = document.getElementById("price_material");
document.getElementById("materials").addEventListener('change', function() {
var selected = this.options[this.selectedIndex];
var txt = selected.dataset.price;
priceMaterial.innerText = txt;
});
或者,您可以在jQuery中执行此操作:
<select class="form-control" id="materials">
<option value="name2" data-price="1.99">name2 + 1.99€</option>
<option value="name3" data-price="10.99">name3 + 10.99€</option>
<option value="name4" data-price="15.99">name4 + 15.99€</option>
</select>
<span id="price_material"></span>
var $priceMaterial = $("#price_material");
$("#materials").on('change', function() {
var txt = $(this).find('option:selected').data('price');
$priceMaterial.text(txt);
});
答案 1 :(得分:0)
您可以使用jQuery的change
函数来监视下拉菜单的更改。在此函数中,编写代码以找到所选的选项并将其值设置为price_materials
跨度。您将在下面看到类似的内容。在操作here中查看它。
$(document).ready(function() {
$('#materials').change(function(){
var value = $('#materials').find(":selected").attr('data-price');
$('#price_material').text(value);
});
});