Всякий раз, когда вы проверяете radio
, событие всплывает и запускает функцию .mycontainer
, и, поскольку значение не изменяется, оно повторно выбирает другое радио. Вам просто нужно реализовать новые обработчики для radio
s. Так как они изменят вход number
, когда функция запускает радиоприемник, выбранное условие будет уже выбрано.
Если вы хотите предотвратить всплытие события и вызвать другую функцию, вы можете вызвать stopPropagation
.
Другой вариант - вместо этого нацелить #quantity
напрямую .mycontainer
, и функция не сработает, поскольку она является родственным элементом, а не элементом-предком.
$('.mycontainer').on('click', function() {
if (parseInt($('#quantity').val(), 10) >= '5') {
$('#2radio').prop('checked', true);
} else {
$('#1radio').prop('checked', true);
}
})
$('[type=radio]').click(function(e) {
e.stopPropagation();
$('#quantity').val($(this).val());
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mycontainer">
<input type="number" id="quantity" name="quantity" value="1"><br><br>
<input type="radio" id="1radio" name="radio" value="1"><label for="1radio">radio button #1</label><br><br>
<input type="radio" id="2radio" name="radio" value="5"><label for="2radio">radio button #2</label>
<div>