Typo, используйте .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 для значения, используйте значение как ценность. Некоторую чистку можно сделать, как показано ниже.
(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>