#javascript #html #jquery #radio-button
#язык JavaScript #HTML #jquery #радиокнопка
Вопрос:
мне удалось получить значение радиоприемника, но проблема в том, что когда я нажимаю общий радиоприемник, я получаю значение частного радиоприемника. что я делаю не так, пожалуйста, нужна помощь
var radio = document.getElementsByName('occupancy'); var occupancy = '' for(var i=0;ilt; radio.length; i ) { if(radio[i].checked) occupancy = radio[i].value; }
это та часть, которая создает проблему
(function() { var stripe = Stripe('pk_test_51JWkHLK7X12cK8Ptf5y5DQn6Ugf6miu3AqSuhH9wdLsyTB9ouf0TY31vDQxq19xIt6YH76uMTEX1kU9HMyrcEb6w00MTxHnGxc'); var cause = document.getElementById('cause'); var amount = document.getElementById('amount'); var currency = document.getElementById('currency'); var datepicker = document.getElementById('datepicker'); var adults = document.getElementById('adults'); var children = document.getElementById('children'); var radio = document.getElementsByName('occupancy'); var occupancy = '' for(var i=0;ilt; radio.length; i ) { if(radio[i].checked) occupancy = radio[i].value; } var btn = document.getElementById('btn'); btn.addEventListener('click', async (e) =gt; { e.preventDefault(); fetch('/checkout_sessions', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ cause: cause.value, datepicker: datepicker.value, adults: adults.value, children: children.value, currency: currency.value, occupancy: occupancy, amount: parseInt(amount.value * 100, 10), }), }) .then((response) =gt; response.json()) .then((session) =gt; { stripe.redirectToCheckout({ sessionId: session.id }); }) .catch((error) =gt; { console.error('Error:', error); }); }); })();
lt;!doctype htmlgt; lt;html lang="en"gt; lt;headgt; lt;titlegt;Titlelt;/titlegt; lt;!-- Required meta tags --gt; lt;meta charset="utf-8"gt; lt;meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"gt; lt;/headgt; lt;bodygt; lt;section class="container sproduct my-5 pt-5"gt; lt;div class="col-lg-6 col-md-12 col-12"gt; lt;h6 style="padding-top: 20px;"gt;Home / Morning Safarilt;/h6gt; lt;pgt;lt;input type="text" id="datepicker" style="width: 120px;" autocomplete="off" placeholder="Date" readonly/gt;lt;/pgt; lt;div class="counter1"gt; lt;Label class="Adults"gt;Adultslt;/Labelgt; lt;div class='down' onclick='decreaseCount(event, this)'gt;-lt;/divgt; lt;input id="adults" type='text' value='1' readonlygt; lt;div class='up' onclick='increaseCount(event, this)'gt; lt;/divgt; lt;/divgt; lt;div class="counter2"gt; lt;Label class="Children"gt;Childrenlt;/Labelgt; lt;div class='down' onclick='decreaseCount2(event, this)'gt;-lt;/divgt; lt;input id="children" type='text' value='0' readonlygt; lt;div class='up' onclick='increaseCount(event, this)'gt; lt;/divgt; lt;/divgt; lt;div style="display: flex; width: 100%"gt; lt;input type="radio" name="occupancy" id="private" value="private" checked="checked" onclick="updateTotal()"gt; lt;label for="private" style="width: 74px;"gt;Privatelt;/labelgt; lt;input type="radio" name="occupancy" id="shared" value="shared" onclick="updateTotal()"gt; lt;label for="shared" style="width: 74px;"gt;Sharedlt;/labelgt; lt;/divgt; lt;div class="field"gt; lt;button type="submit" id="btn"gt;Donatelt;/buttongt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/sectiongt; lt;/bodygt; lt;/htmlgt;
мне удалось получить значение радиоприемника, но проблема в том, что когда я нажимаю общий радиоприемник, я получаю значение частного радиоприемника. что я делаю не так, пожалуйста, нужна помощь
var radio = document.getElementsByName('occupancy'); var occupancy = '' for(var i=0;ilt; radio.length; i ) { if(radio[i].checked) occupancy = radio[i].value; }
это та часть, которая создает проблему
Комментарии:
1. Это работает для меня, когда я помещаю это в фрагмент. Однако вот более короткий способ получить это значение:
let occupancy = document.querySelector('input[name=occupancy]:checked')?.value || '';