我有一个下拉选择字段和其他字段。就像这样,
<div class="form-group"><label class="sr-only" for="id_max_size">Max
Size</label><select name="max_size" title="" required class="form-control" id="id_max_size">
<option value="" disabled selected>Size ↓</option>
<option value="10">AAA</option>
<option value="20">BBB</option>
<option value="30">CCC</option>
<option value="40">DDD</option>
</select>
</div>
<input type="number" name="no_needed" title="" required id="id_no_needed" step="0.01" />
<input type="number" name="total_price" title="" required id="id_total_price" step="0.01" />
让我们说用户选择AAA,我希望获得“AAA”的价值。这是10并乘以&#39; no_needed&#39;用户插入的字段值,并将结果插入total_price字段。即使用户选择CCC,它也应遵循相同的过程。
$(document).ready(function () {
$('select').on('change', function() {
$('.sr-only').text($('select[name=max_size]').val() *
($('select[name=no_needed]').val()));
});
});
它无法正常工作。我真的不懂javascript。我该如何做到这一点?
答案 0 :(得分:4)
名称为print("Enter text to translate:", end ="")
sentence = input ()
replaced = sentence.replace("", "x")
print(replaced)
的元素为no_needed
,而非input
。
select
因此,您的选择器应为<input type="number" name="no_needed" title="" required id="id_no_needed" step="0.01" />
,而不是input[name=no_needed]
。
同样,要选择名称为select[name=no_needed]
的输入,选择器将为total_price
。此外,由于您打算设置它的值,而不是设置其input[name=total_price]
,因此您需要设置.text()
。
请参阅更新的代码段:
.val()
&#13;
$(document).ready(function() {
$('select').on('change', function() {
$('input[name=total_price]').val($('select[name=max_size]').val() *
($('input[name=no_needed]').val()));
});
});
&#13;
此外,您可以在<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="form-group"><label class="sr-only" for="id_max_size">Max
Size</label><select name="max_size" title="" required class="form-control" id="id_max_size">
<option value="" disabled selected>Size ↓</option>
<option value="10">AAA</option>
<option value="20">BBB</option>
<option value="30">CCC</option>
<option value="40">DDD</option>
</select>
</div>
<input type="number" name="no_needed" title="" required id="id_no_needed" step="0.01" />
<input type="number" name="total_price" title="" required id="id_total_price" step="0.01" />
输入上设置更改事件处理程序,以更新总价格,即使尺寸没有变化:
no_needed
&#13;
function recalculatePrice() {
$('input[name=total_price]').val(
($('select[name=max_size]').val() *
$('input[name=no_needed]').val()).toFixed(2)
);
}
$(document).ready(function() {
$('select').on('change', function() {
recalculatePrice();
});
$('input[name=no_needed]').on('input', function() {
if($(this).val()) {
if(!isNaN($(this).val())) {
recalculatePrice();
} else {
$(this).val("");
}
}
});
});
&#13;
答案 1 :(得分:2)
您可以在选择中使用.val()
获取所选选项的值。然后,您需要将select和“no needed”输入的值转换为整数或浮点数,以便将它们相乘。
当没有设置值时,我还添加了回退到0
。
$(document).ready(function () {
$('#id_max_size').on('change', function() {
var selectedValue = parseFloat($(this).val()) || 0,
noNeededValue = parseFloat($('#id_no_needed').val()) || 0;
$('#id_total_price').val(selectedValue * noNeededValue);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group"><label class="sr-only" for="id_max_size">Max
Size</label><select name="max_size" title="" required class="form-control" id="id_max_size">
<option value="" disabled selected>Size ↓</option>
<option value="10">AAA</option>
<option value="20">BBB</option>
<option value="30">CCC</option>
<option value="40">DDD</option>
</select>
</div>
<input type="number" name="no_needed" title="" required id="id_no_needed" step="0.01" />
<input type="number" name="total_price" title="" required id="id_total_price" step="0.01" />
答案 2 :(得分:0)
你有一些错误:
free
选择输入 - 请改用select
。$('input')
来引用事件侦听器回调中的相关this
元素。试试这个:
select
答案 3 :(得分:0)
这是另一种解决方案。使用一些常用代码。
这是一个小提琴的链接。 https://jsbin.com/cemafiqapi/edit?js,output
$(document).ready(function () {
$('select').on('change', process);
$('#id_no_needed').on('change', process);
function process (e) {
var factor = $('#id_no_needed').val() || 0;
var selected = Number($('#id_max_size').val()) || 0;
$('#id_total_price').val(factor * selected)
}
});