Задать вопрос
@kamtm

Как вывести скрытый блок, при выборе определенной input radio кнопки?

Добрый день!

В форме регистрации могут регистрироваться, как пользователи, так и компании.

Хотелось, чтобы при выборе радиокнопки Юридическое лицо появились 2 скрытые ранее формы и всегда отображались до заполнения всей формы.

Сейчас есть такая функция:

<script>
		window.onload= function()
		{
		document.getElementById('usercompany').style.display='none';
		document.getElementById('usercomptype').style.display='none';
		}
		function usertype_field(value)
		{
			switch (value)
			{
			case "2":
				document.getElementById('usercompany').style.display='block'
				document.getElementById('usercomptype').style.display='block';
				break
			default:
				document.getElementById('usercompany').style.display='none'
				document.getElementById('usercomptype').style.display='none';
				break
			}
		}
		</script>


Есть 2 радиокнопки:

<tr><td>Выберите тип пользователя: </td><td>
<input <?php if (isset($usertype) && $usertype == 1 ) echo 'checked="checked"'; ?> type="radio" value="1" name="usertype" onchange="usertype_field(this.value)"> Физическое лицо
<input <?php if (isset($usertype) && $usertype == 2 ) echo 'checked="checked"'; ?> type="radio" value="2" name="usertype" onchange="usertype_field(this.value)"> Юридическое лицо
</td></tr>


Выше в коде указано:
$usertype = (trim($_POST['usertype']));
		$usertype = substr($usertype, 0, 1);


Скрытые формы, которые нужно всегда отображать, если выбрать Юридическое лицо:
<tr id=usercompany><td>Ваша компания: </td><td><input type=text name=usercompany value='<? if (isset($usercompany)) echo htmlspecialchars($usercompany); ?>'></td></tr>
<tr id=usercomptype><td>Специализация: </td><td>
<select name=usercomptype>
<option <?php if (isset($usercomptype) && $usercomptype == 0 ) echo 'selected'; ?> value="0">Выберите специализацию</option>
<option <?php if (isset($usercomptype) && $usercomptype == 1 ) echo 'selected'; ?> value="1">ИП</option>
<option <?php if (isset($usercomptype) && $usercomptype == 2 ) echo 'selected'; ?> value="2">Другое</option>
</select>
</td></tr>


При первом выборе Юридическое лицо, формы отображаются. Но, если Нажать кнопку Регистрация, и отправить данные, а в форме, что-то будет не заполнено и выйдет ошибка, например, Не заполнено поле Имя, скрытые поля Название компании и Тип пропадают.

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

Спасибо.
  • Вопрос задан
  • 3258 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
1. Зачем в onload менять стиль отображения на скрытый? Что мешает это сделать на CSS?
2. Хорошо бы было закешировать вызов элементов. А то у вас 100500 getElementById.
3. Ответом на ваш вопрос будет либо на стороне сервера дописывать класс, скрывающий на CSS ненужные элементы, в зависимости от $usertype, либо в onload делать тоже самое на JS.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@servekon
В функции JS нужно еще сделать, чтобы у этих элементов добавлялись/удалялись атрибуты обязательных полей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы