Как создать выбор формы через radio input?

226
04 апреля 2017, 09:46

Всем привет!

Есть три формы: пополнение счета через PayPal, QIWI и Яндекс Деньги. Пользователю предлагается выбрать один из методов через radio input. Проблема в том, что для этих методов оплаты разные form запроса.

Пример формы выбора оплаты:

<form id="check" action="">
 <input type="radio" value="paypal">
 <input type="radio" value="qiwi">
 <input type="radio" value="yandex">
</form>

Пример самих форм оплаты:

<form id="paypal" action="paypal.com">
 <input type="hidden' name=paypal>
</form>
<form id="qiwi" action="qiwi.com">
 <input type="hidden' name=qiwi>
</form>
<form id="yandex" action="yandex.com">
 <input type="hidden' name=yandex>
</form>

Собственно вопрос - как сделать форму для выбора формы?)

Благодарен за любую помощь или направление!

Answer 1

// выбор всех форм 
var forms = document.querySelectorAll('form'); 
var radios = document.querySelectorAll('form#check input[type=radio]'); 
 
// при клике на кнопку, берется её значение, 
// прячутся все остальные формы и показывается конкретная с  
// переданным идентификатором 
forms[0].addEventListener("click",function(e) {   
  if(e.target && e.target.nodeName == "INPUT") { 
    hideFormsButFirst(); 
    setFormVisible(e.target.value);     
	} 
}); 
 
// функция, которая прячет все формы, кроме той, где радио кнопки 
function hideFormsButFirst() { 
  for (var i = 0; i < forms.length; ++i) { 
    forms[i].style.display = 'none'; 
  } 
  forms[0].style.display = 'block'; 
} 
 
// отображает форму по переданному идентификатору 
function setFormVisible(id = "paypal") { 
    var form = document.getElementById(id);          
    form.style.display = 'block';                               
} 
 
// первоначальные заготовки 
function init() { 
    hideFormsButFirst(); 
    setFormVisible(); 
} 
 
init();
<form id="check" action=""> 
 <input type="radio" value="paypal" name="payment" checked=checked> 
 <input type="radio" value="qiwi" name="payment"> 
 <input type="radio" value="yandex" name="payment"> 
</form> 
 
<form id="paypal" action="paypal.com"> 
 <input type="hidden" name=paypal> 
  paypal форма 
</form> 
 
<form id="qiwi" action="qiwi.com"> 
  qiwi форма 
 <input type="hidden" name=qiwi> 
</form> 
<form id="yandex" action="yandex.com"> 
  yandex форма 
 <input type="hidden" name=yandex> 
</form>

Answer 2

Благодарен за любую помощь или направление!

Вар1. Использовать один action и, передавая в него имя/метку вида платежа производить нужные действия.

Вар2. Использовать 2 формы (первая только выбор без отправки) и вторую подгружать js-om с нужными action.

Вар3. Менять непосредственно action по js.

READ ALSO
Как парсить в PHP Simple HTML DOM Parser тег &lt;title&gt; в &lt;head&gt;

Как парсить в PHP Simple HTML DOM Parser тег <title> в <head>

Не получается парсить head теги

244
Проблема с svg в браузере safari

Проблема с svg в браузере safari

В браузере safari, не отображается часть svg с linear gradient, в остальных браузерах все отлично работает

423
Как сделать вывод постов с разными размерами превью в wp?

Как сделать вывод постов с разными размерами превью в wp?

Добрый день, подскажите как реализавать вот такой вывод постов:

234
Не получается прикрутить графики

Не получается прикрутить графики

Мне нужно научиться строить графикиДля этого я загуглил несколько библиотек и выбрал из найденных то, что мне показалось проще: uvharts

221