Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Выпадающее поле при выборе пункта радио кнопки (https://javascript.ru/forum/dom-window/13921-vypadayushhee-pole-pri-vybore-punkta-radio-knopki.html)

Андрей28 20.12.2010 20:20

Выпадающее поле при выборе пункта радио кнопки
 
Всем привет!

Прошу помочь новичку с таким моментом.
Необходимо сделать, чтобы при выборе одного из пунктов меню, появлялось текстовое поле.

Вот моя конструкция
<table width="536" cellpadding="1">
          <?php foreach ($shipping_methods as $shipping_method) { ?>
          <tr>
            <td colspan="3"><!--<b><?php echo $shipping_method['title']; ?></b>--></td>
          </tr>
          <?php if (!$shipping_method['error']) { ?>
          <?php foreach ($shipping_method['quote'] as $quote) { ?>
          <tr>
            <td width="1"><label for="<?php echo $quote['id']; ?>">
                <?php if ($quote['id'] == $shipping || !$shipping) { ?>
				<?php $shipping = $quote['id']; ?>
                <input type="radio" name="shipping_method" value="<?php echo $quote['id']; ?>" id="<?php echo $quote['id']; ?>" checked="checked" style="margin: 0px;" />
                <?php } else { ?>
                <input type="radio" name="shipping_method" value="<?php echo $quote['id']; ?>" id="<?php echo $quote['id']; ?>" style="margin: 0px;" />
                <?php } ?>
              </label></td>
            <td width="534"><label for="<?php echo $quote['id']; ?>" style="cursor: pointer;"><?php echo $quote['title']; ?></label></td>
            <td width="100" align="right"><label for="<?php echo $quote['id']; ?>" style="cursor: pointer;"><?php echo $quote['text']; ?></label></td>
          </tr>
          <?php } ?>
          <?php } else { ?>
          <tr>
            <td colspan="3"><div class="error"><?php echo $shipping_method['error']; ?></div></td>
          </tr>
          <?php } ?>
          <?php } ?>
        </table>
        <div style="padding-left:20px">Адрес: <input name="comment" style="width: 200px" value="<?php echo $comment; ?>" /></div>

При этом раскладе у меня поле Адрес постоянно присутствует, а нужно чтобы появлялось только при выборе одного пункта.
Пожалуйста кто знает - подскажите:help:

Vulkan 20.12.2010 20:38

Самый банальный метод:
<table width="536" cellpadding="1">
          <?php foreach ($shipping_methods as $shipping_method) { ?>
          <tr>
            <td colspan="3"><!--<b><?php echo $shipping_method['title']; ?></b>--></td>
          </tr>
          <?php if (!$shipping_method['error']) { ?>
          <?php foreach ($shipping_method['quote'] as $quote) { ?>
          <tr>
            <td width="1"><label for="<?php echo $quote['id']; ?>">
                <?php if ($quote['id'] == $shipping || !$shipping) { ?>
				<?php $shipping = $quote['id']; ?>
                <input type="radio" onclick="document.getElementById('address').style.display='block';" name="shipping_method" value="<?php echo $quote['id']; ?>" id="<?php echo $quote['id']; ?>" checked="checked" style="margin: 0px;" />
                <?php } else { ?>
                <input type="radio" onclick="document.getElementById('address').style.display='block';" name="shipping_method" value="<?php echo $quote['id']; ?>" id="<?php echo $quote['id']; ?>" style="margin: 0px;" />
                <?php } ?>
              </label></td>
            <td width="534"><label for="<?php echo $quote['id']; ?>" style="cursor: pointer;"><?php echo $quote['title']; ?></label></td>
            <td width="100" align="right"><label for="<?php echo $quote['id']; ?>" style="cursor: pointer;"><?php echo $quote['text']; ?></label></td>
          </tr>
          <?php } ?>
          <?php } else { ?>
          <tr>
            <td colspan="3"><div class="error"><?php echo $shipping_method['error']; ?></div></td>
          </tr>
          <?php } ?>
          <?php } ?>
        </table>
        <div style="padding-left:20px; display:none;" id="address">Адрес: <input name="comment" style="width: 200px" value="<?php echo $comment; ?>" /></div>

Андрей28 20.12.2010 22:09

Спасибо тебе большое за помощь, Вулкан. Всё отлично работает.
Вот только ещё вопрос.

Поле появляется при нажатии на один из выбранных пунктов.
А как сделать так, чтобы когда переходишь снова на другой пункт, это поле пропадало?

Vulkan 21.12.2010 12:39

Ну как вариант подставить если нужно чтобы при щелчке на пункт поле пропадала добавить ему свойство:
onclick="document.getElementById('address').style.display='none';"

Андрей28 21.12.2010 13:49

Цитата:

Сообщение от Vulkan (Сообщение 84638)
Ну как вариант подставить если нужно чтобы при щелчке на пункт поле пропадала добавить ему свойство:
onclick="document.getElementById('address').style.display='none';"

Попробовал. При нажатии на поле оно действительно пропадает, но тогда нет возможности его заполнить)))
А надо, чтоб при выборе одного пункта радио кнопки оно пропадало, а при выборе другого появлялось. Во как :)

ksa 21.12.2010 13:57

Цитата:

Сообщение от Андрей28
надо, чтоб при выборе одного пункта радио кнопки оно пропадало, а при выборе другого появлялось

Как вариант...

<!DOCTYPE html>
<html>
<head>
<style>
#text {
	display: none;
}
</style>
<script>
function Go() {
	document.getElementById('text').style.display=(document.getElementById('r1').checked)? 'block': 'none'
}
</script>
</head>
<body>
<input type='radio' name='test' id='r1' onclick='Go()' />
</br>
<input type='radio' name='test' id='r2' onclick='Go()' />
<p id='text'>
	Text
</p>
</body>
</html>

Vulkan 21.12.2010 13:58

Ну тут уже можно догадаться, чтобы оно появлялось при нажатии на поле добавляете:
onclick="document.getElementById('address').style.display='block';"

чтобы пропадало
onclick="document.getElementById('address').style.display='none';"

Андрей28 21.12.2010 14:46

Всем спасибо за помощь! Решил пока оставить как есть без выпадания поля. Чёт не выходит.
С наступающим новым годом:)

Vulkan 21.12.2010 15:19

что именно не получается, какая ошибка? Выложите код сюда

ksa 21.12.2010 15:22

Цитата:

Сообщение от Андрей28
Чёт не выходит

Ну ты даёшь... :D


Часовой пояс GMT +3, время: 02:18.