Выпадающее поле при выборе пункта радио кнопки
Всем привет!
Прошу помочь новичку с таким моментом. Необходимо сделать, чтобы при выборе одного из пунктов меню, появлялось текстовое поле. Вот моя конструкция <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: |
Самый банальный метод:
<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> |
Спасибо тебе большое за помощь, Вулкан. Всё отлично работает.
Вот только ещё вопрос. Поле появляется при нажатии на один из выбранных пунктов. А как сделать так, чтобы когда переходишь снова на другой пункт, это поле пропадало? |
Ну как вариант подставить если нужно чтобы при щелчке на пункт поле пропадала добавить ему свойство:
onclick="document.getElementById('address').style.display='none';" |
Цитата:
А надо, чтоб при выборе одного пункта радио кнопки оно пропадало, а при выборе другого появлялось. Во как :) |
Цитата:
<!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> |
Ну тут уже можно догадаться, чтобы оно появлялось при нажатии на поле добавляете:
onclick="document.getElementById('address').style.display='block';" чтобы пропадало onclick="document.getElementById('address').style.display='none';" |
Всем спасибо за помощь! Решил пока оставить как есть без выпадания поля. Чёт не выходит.
С наступающим новым годом:) |
что именно не получается, какая ошибка? Выложите код сюда
|
Цитата:
|
Цитата:
Но в PHP не силён. Только учусь. Понимаю что вещи простые для знающих.. Делаю интернет-магазин... http://motoproblem.net/ И вот если купить товар и оформлять, то во 2 шаге, когда человек выбирает способ доставки - у меня стоит 2 варианта - самовывоз и доставка по киеву. И если человек выбирает доставка по киеву, то нужно заполнить поле адрес. Сейчас оно у меня постоянно активно, а мне хотелось бы чтобы когда человек выбирает самовывоз, то поле адрес не было видно, а когда выбирает доставка по киеву, то оно появлялось. Просто тут ещё такой момент, что если сделать так как вы советовали в первый раз, то поле появляется при нажатии на второй пункт но не пропадает если опять вернуться на первый, и при этом если перейти на следующий шаг и вернуться обратно, то этого поля тоже не видно. Насколько понятно объяснил - сложно сказать:) Но если сделать тестовую покупку, то там сразу станет ясно. Спасибо что пытаетесь помочь:thanks: |
Цитата:
|
ну короче у div в котором адрес ставь
style="padding-left:20px; display:none;" и id="address" у пункта самовывоз ставь onclick="document.getElementById('address').style.display='none';" у пункта доставка по киеву ставь onclick="document.getElementById('address').style.display='block';" Проверял на твоём сайте, всё работает если так сделать. На счёт Цитата:
|
Цитата:
Вот только у меня вот так код записан (с учётом что выставлять варианты доставок нужно в админке сайта) <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> Как мне обозначить в таком коде где будет самовывоз а где доставка по киеву? |
<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" onclick="document.getElementById('address').style.display='none';" style="margin: 0px;" /> <?php } else { ?> <input type="radio" name="shipping_method" value="<?php echo $quote['id']; ?>" id="<?php echo $quote['id']; ?>" onclick="document.getElementById('address').style.display='block';" 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> Вот у которого checked=checked, тот и самовывоз, тут я уже онклик проставил как надо, на поле адреса незабудь стиль и ид поставить как я выше прописал. |
Цитата:
Только как и писал если пойти на след.шаг и вернуться обратно, то пункт то уже стоит тот, что мы выбрали - доставка по киеву. И чтобы отредактировать поле адрес нам нужно нажать уже на самовывоз.. не логично выходит. Сколько мне будет стоить решение этого вопроса?:) |
Андрей28, обращайтесь в раздел работа на этом сайте, там найдётся тот кто сделает это.
|
Цитата:
Хороших праздников:) |
Часовой пояс GMT +3, время: 10:36. |