2 回答
TA贡献1810条经验 获得超4个赞
这段代码有很多问题:
标签
id
不是存储值的好方法。值可以存储在value
属性本身中,而标签是<option>
元素的实际内容。这也使得检索值变得更加容易。您可以只定义一个函数(例如
calc()
在我的示例中),并分配它对onchange
输入的引用,而不是重复代码。使用 将
Number()
输入的字符串转换val()
为正确的数字。
例子:
// Input number
$('input[name=\'cantitate\']').on('change', calc);
$('#variantacurs').on('change', calc);
function calc() {
var cant = Number($('#cantitate').val());
var price = Number($('#variantacurs').val());
$('#total').text(cant * price + ' USD');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="total">60</div>
<select class="form-control" id="variantacurs" name="variantacurs">
<option value="60" disabled selected>---SELECT---</option>
<option value="100">Option 1</option>
<option value="210">Option 2"</option>
<option value="300">Option 3"</option>
</select>
<input type="number" name="cantitate" id="cantitate" placeholder="1" min="1" value="1">
TA贡献1804条经验 获得超3个赞
拼写错误,使用 .form-control 选择输入/选择值。
$(".form-control").children(":selected")
$("input[name='cantitate']").on("change", function () {
var cant = $("#cantitate").val();
var price = $(".form-control").children(":selected").attr("id");
console.log(price)
$("#total").text(price * cant + " USD");
});
我建议不要使用 id 作为值,而使用 value 作为值。可以按如下方式进行一些清洁。
(function ($) {
// Input number
const input = $("input[name='cantitate']");
const select = $(".form-control");
input.on("change", function () {
calculate($(this).val(), select.children(":selected").val());
});
// Select box
select.on("change", function () {
calculate(input.val(), $(this).val());
});
function calculate(input, selected) {
var cant = Number(input);
var price = Number(selected);
$("#total").text(`Total: ${price * cant + " USD"}`);
}
})($);
.as-console {
min-height: 100% !important;
}
.as-console-row {
color: blue !important;
}
<div id="total">Total: 0</div>
<select class="form-control" id="variantacurs" name="variantacurs">
<option value="">---SELECT---</option>
<option value="100">Option 1</option>
<option value="200">Option 2</option>
<option value="300">Option 3</option>
</select>
<input type="number" name="cantitate" placeholder="1" min="1" value="1">
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
- 2 回答
- 0 关注
- 84 浏览
添加回答
举报