У меня есть код, извлекающий checked
радио value
в текстовое поле #donation
, однако я хочу настроить дополнительный readonly
, который показывает выбранное значение, было ли это радио или то, что было введено в текстовое поле. В любой момент времени я хочу, чтобы последнее выбранное радио или новое введенное значение отображалось в #donation_confirm
.
$("#donation").click(function () {
$(this).val("");
});
$("#donation").keyup(function() {
$(this).closest("div").addClass("donation--active");
$("input:radio[name=donation]").each(function() {
$(this).prop("checked", false);
});
});
$('input[type="radio"]').on("change", function() {
$("#donation").closest("div").removeClass("donation--active");
$("#donation, #donation_confirm").val(
this.checked ?
this.value :
$('input[type="radio"][name="' + this.name + '"]:checked').val()
);
});
$('input[type="radio"]').trigger("change");
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
background: #fff;
width: 100%;
margin: auto;
padding: 30px;
min-width: 320px;
max-width: 540px;
border-radius: 3px;
}
.inline-radio {
font-size: 19px;
display: -webkit-box;
display: flex;
border-radius: 3px;
}
.inline-radio div {
border: 1px solid #ededed;
margin-top: -1px;
margin-left: -1px;
position: relative;
-webkit-box-flex: 1;
flex: 1;
}
.inline-radio div:last-child {
color: #b6b6b6;
padding: 0 0.9rem;
display: flex;
align-items: center;
}
.inline-radio input[type="radio"] {
cursor: pointer;
width: 100%;
height: 60px;
opacity: 0;
}
.inline-radio input[type="text"] {
color: #b6b6b6;
font-size: inherit;
margin-left: 0.3rem;
display: flex;
border: none;
outline: none;
background: #0000ff00
}
.inline-radio label {
position: absolute;
top: 0;
left: 0;
color: #b6b6b6;
width: 100%;
height: 100%;
background: #fff;
display: -webkit-box;
display: flex;
-webkit-box-align: center;
align-items: center;
-webkit-box-pack: center;
justify-content: center;
pointer-events: none;
}
.inline-radio input:checked+label {
background: #d81b60;
font-weight: 500;
color: #fff;
}
.donation--active {
background: #d81b60;
font-weight: 500;
color: #fff !important;
}
.donation--active input {
color: #fff !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="inline-radio">
<div><input type="radio" value="5" name="donation"><label>$5</label></div>
<div><input type="radio" value="25" name="donation" checked><label>$25</label></div>
<div><input type="radio" value="50" name="donation"><label>$50</label></div>
<div><input type="radio" value="100" name="donation"><label>$100</label></div>
<div><span>$</span><input id="donation" value="" name="donation" type="text"></div>
</div>
<div><span>$</span><input id="donation_confirm" value="" name="donation" type="text" readonly></div>