У меня есть радио-выбор формы 2, a и b, когда форма отправлена, я хочу, чтобы другая форма, форма для a и одна для b, переходили от отображения: ни одного к отображению: блокировать в зависимости от выбора. вот что у меня есть.

{amp}lt;script{amp}gt; function validateForm() { var x = document.forms["choice"]["choose one"].value; if (x == "A") { document.getElementById("a").style.display = "block"; } else { document.getElementById("b").style.display = "block"; } } {amp}lt;/script{amp}gt; 

и позже в HTML.

 {amp}lt;form action="form.php" method="get" name="choice"{amp}gt; 0000:{amp}lt;br{amp}gt; {amp}lt;label{amp}gt; {amp}lt;input type="radio" name="choose one" value="A"{amp}gt; A {amp}lt;/label{amp}gt;{amp}lt;br{amp}gt; {amp}lt;label{amp}gt; {amp}lt;input type="radio" name="choose one" value="B"{amp}gt; B {amp}lt;/label{amp}gt;{amp}lt;br{amp}gt; {amp}lt;input type="submit" value="Sub"{amp}gt; {amp}lt;/form{amp}gt; {amp}lt;form id="a"{amp}gt; {amp}lt;/form{amp}gt; {amp}lt;form id="b"{amp}gt; {amp}lt;/form{amp}gt; 
Daracon

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,

  1. Вам нужно вызвать validateForm() по нажатию кнопки отправки
  2. Первоначально скрывайте формы, при выборе формы формы будут отображаться
 {amp}lt;script{amp}gt; function validateForm() { var x = document.forms["choice"]["choose one"].value; if (x == "A") { document.getElementById("a").style.display = "block"; document.getElementById("b").style.display = "none"; } else { document.getElementById("b").style.display = "block"; document.getElementById("a").style.display = "none"; } } {amp}lt;/script{amp}gt; {amp}lt;form method="get" name="choice"{amp}gt; 0000:{amp}lt;br{amp}gt; {amp}lt;label{amp}gt; {amp}lt;input type="radio" name="choose one" value="A"{amp}gt; A {amp}lt;/label{amp}gt;{amp}lt;br{amp}gt; {amp}lt;label{amp}gt; {amp}lt;input type="radio" name="choose one" value="B"{amp}gt; B {amp}lt;/label{amp}gt;{amp}lt;br{amp}gt; {amp}lt;input type="button" value="Sub" onclick="validateForm()"{amp}gt; {amp}lt;/form{amp}gt; {amp}lt;form id="a" style="display:none"{amp}gt; form a {amp}lt;/form{amp}gt; {amp}lt;form id="b" style="display:none"{amp}gt; form b {amp}lt;/form{amp}gt; 

Добавьте событие onchange и установите display:none обеих форм display:none при запуске:

 document.querySelectorAll("input[type='radio']").forEach(el ={amp}gt; { el.addEventListener("change", (evt) ={amp}gt; validateForm(evt)) }) function validateForm(e) { let a = document.getElementById("a") let b = document.getElementById("b") a.style.display = b.style.display = "none" if (e.target.value == "A") { a.style.display = "block"; } else { b.style.display = "block"; } } 
 #a, #b { display: none } 
 {amp}lt;form action="form.php" method="get" name="choice"{amp}gt; 0000:{amp}lt;br{amp}gt; {amp}lt;label{amp}gt; {amp}lt;input type="radio" name="choose one" value="A"{amp}gt; A {amp}lt;/label{amp}gt;{amp}lt;br{amp}gt; {amp}lt;label{amp}gt; {amp}lt;input type="radio" name="choose one" value="B"{amp}gt; B {amp}lt;/label{amp}gt;{amp}lt;br{amp}gt; {amp}lt;input type="submit" value="Sub"{amp}gt; {amp}lt;/form{amp}gt; {amp}lt;form id="a"{amp}gt; Form A {amp}lt;/form{amp}gt; {amp}lt;form id="b"{amp}gt; Form B {amp}lt;/form{amp}gt; 

Когда вы отправляете форму, она перезагружает страницу. Таким образом, вы не можете показать форму после отправки первой формы, в случае по умолчанию.

Поэтому вам нужно либо отправить форму с помощью AJAX, либо включить две другие формы в первую форму (измените их на теги {amp}lt;div{amp}gt; и поместите их в первую форму). Измените кнопку отправки на элемент {amp}lt;button{amp}gt; с методом onclick , чтобы отобразить вторую часть формы, а также на кнопке реальной отправки. Вы можете отключить отправку формы, когда пользователь нажимает клавишу enter при вводе в любых полях, и отключить отправку с помощью программной клавиатуры на мобильном телефоне. Должно быть возможно найти с Google, как сделать каждый из них.