Помогите сделать такой select
Есть два селекта:
первый: <select name="dost"> <option value="0">Выберете способ доставки</option> <option value="1">Почтой России (оплата при получении)</option> <option value="2">Курьером по России (Оплата по предоплате)</option> </select> и второй: <select name="pay"> <option value="0">Выберете способ оплаты</option> <option value="1">Наличными при получении</option> <option value="2">Предоплата на Яндекс деньги</option> <option value="3">Предоплата на WebMoney</option> </select> Как сделать если в первом селекте выбран способ почтой России, то во втором селекте автоматом выбирается оплата при получении, а остальные option становятся не активными к выбору. Ну и размеется если выбран способ Курьером по России, то во втором селекте становится неактивным наличными при получении. Надеюсь понятно описал задачу. Заранее спасибо за ответы. |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> <select class="select1" name="dost"> <option value="0">Выберете способ доставки</option> <option value="1">Почтой России (оплата при получении)</option> <option value="2">Курьером по России (Оплата по предоплате)</option> </select> <select class="select2" name="pay"> <option value="0">Выберете способ оплаты</option> <option value="1">Наличными при получении</option> <option value="2">Предоплата на Яндекс деньги</option> <option value="3">Предоплата на WebMoney</option> </select> <script> $('.select1').change(function() { switch($(this).val()) { case '0': //Действие выполнится при выборе первого option break; case '1': //Действие выполнится при выборе второго option break; case '2': //Действие выполнится при выборе третьего option break; } }); </script> |
Цитата:
Цитата:
|
Нечто вроде такого...
<!DOCTYPE html> <html> <head> <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> #case1, #case2 { display: none; } </style> <script type="text/javascript"> function test(Case) { switch(Case) { case '1': document.getElementById('case1').style.display='inline'; document.getElementById('case2').style.display=''; break; case '2': document.getElementById('case1').style.display=''; document.getElementById('case2').style.display='inline'; break; default: document.getElementById('case1').style.display=''; document.getElementById('case2').style.display=''; }; }; </script> </head> <body> <label>Выберете способ доставки <select name="dost" onchange='test(this.value);'> <option value="0"></option> <option value="1">Почтой России (оплата при получении)</option> <option value="2">Курьером по России (Оплата по предоплате)</option> </select> </label> <div> <p id='case1'>Оплата наличными при получении</p> <label id='case2'>Выберете способ оплаты: <select name="pay"> <option value="0"></option> <option value="2">Предоплата на Яндекс деньги</option> <option value="3">Предоплата на WebMoney</option> </select> </label> </div> </body> </html> |
Цитата:
|
tsigel - Зоркий сокол! :D
|
Всем спасибо за ответы) воспользовался способом ksa, работает)
|
Возникла такая проблема, у меня идет проверка через js правильность заполнения полей..
function send(){ var f=document.forms['checkout']; if(!f.name.value || f.name.value=='') alert('Введите Ваше ФИО!'); else if(!f.address.value || f.address.value=='') alert('Введите Ваш адрес!'); else if (f.dost.selectedIndex == 0) alert('Выберите способ доставки!'); else if (f.pay.selectedIndex == 0) alert('Выберите способ оплаты!'); else f.submit(); } Как сделать чтобы не вылазила ошибка вы не выбрали способ оплаты?) |
Цитата:
|
а как эт изменить нужно? Сори, но js вообще не курю((
|
Цитата:
Здается мне ты от программинга вообще далеко... Поскольку в том куске есть все для проведения аналогии. Достаточно хоть что-то понимать в программировании. |
я на php пишу) до js еще руки не добрались..
|
Цитата:
Все, что тебе нужно - так это просто чуть усложнить условие Цитата:
Цитата:
|
если чесно нифига не понял)) что именно нужно изменить?
//написал хренотень так тип? |
Ёпт
if ((f.dost.selectedIndex > 1) && (f.pay.selectedIndex == 0)) alert('Выберите способ оплаты!'); |
аа, теперь норм) спс за помощь.. У меня еще проверка идет не только при помощи js, а еще и со стороны php, которую думаю убрать для оплаты..
|
silor, Возникла такая проблема, я 41 строку твоего кода помещаю в селект <select name="pay"><option value="1">Оплата наличными при получении</option></select> (Для дальнейшего занесения в базу значения value), из-за чего не срабатывает проверка на js.. Как можно это исправить?
|
silor, ты научишся делать нормальные примеры?
Цитата:
|
Так тут и так понятно что проверка на js не срабатывает из-за <select name="pay"><option value="1">, вопрос в том, как можно по другому это сделать? Ведь в базу вносится значение value..
|
Цитата:
|
а как можно подругому сделать чтобы работало?))
|
Цитата:
Цитата:
|
Я пишу код так:
<label>Выберете способ доставки <select name="dost" onchange='test(this.value);'> <option value="0"></option> <option value="1">Почтой России (оплата при получении)</option> <option value="2">Курьером по России (Оплата по предоплате)</option> </select> </label> <div> <select name="pay"> <option value="1">Оплата наличными при получении</option> </select> <label id='case2'>Выберете способ оплаты: <select name="pay"> <option value="0"></option> <option value="2">Предоплата на Яндекс деньги</option> <option value="3">Предоплата на WebMoney</option> </select> </label> из-за <option value="1">Оплата наличными при получении</option>не срабатывает проверка js if ((f.dost.selectedIndex > 1) && (f.pay.selectedIndex == 0)) alert('Выберите способ оплаты!'); |
silor,
так и не сработает - смените name у <select name="pay"> <option value="1">Оплата наличными при получении</option> </select> к примеру на "pay2" или делайте такой JS: if ((f.dost.selectedIndex > 1) && (document.getElementsByName("pay")[1].selectedIndex == 0)) alert('Выберите способ оплаты!'); несомненно лучше первый вариант |
Dim@, дело в том, что сменить name не вариант, так как в базу заносится способ оплаты, собственно name "pay"
|
silor,
ну юзайте второй вариант |
а чем второй вариант хуже первого..?
|
silor,
тем что если ВДРУГ перед: <label id='case2'>Выберете способ оплаты: <select name="pay"> <option value="0"></option> <option value="2">Предоплата на Яндекс деньги</option> <option value="3">Предоплата на WebMoney</option> </select> </label>появится любой элемент с именем "pay", то код не заработает (как надо), лучший выход (мне так кажется) из такого положения присвоить <select name="pay">уникальный id и писать if ((f.dost.selectedIndex > 1) && (document.getElementById("здесь id прописанный в html").selectedIndex == 0)) alert('Выберите способ оплаты!'); |
silor, ты сам придумал проблему. А теперь пыжешся её преодалеть...
Не делай так и будет тебе счастие. |
ksa, а как тогда выйти из этой проблемы? Если необходимо чтобы в базу данных заносился value со способом доставки и оплаты..
|
Цитата:
|
Тоесть в самой таблице указать единицу по умолчанию?
`pay` varchar(220) NOT NULL default '1', |
Цитата:
Либо при самой записи просто записать нужное значение... |
А еще есть какие-то варианты..?
|
Цитата:
|
ага, вижу)) а как при записи записывать нужное значение? Если я делаю так:
$dost=$mysqli->real_escape_string(htmlspecialchars(trim($_POST['dost']))); $pay=$mysqli->real_escape_string(htmlspecialchars(trim($_POST['pay']))); $mysqli->query("INSERT INTO `zakaz` SET `name`='$name', `phone`='$phone', `dost`='$dost', `pay`='$pay';") or die(mysql_error()); |
Цитата:
add(Dost,Pay) s:Dost=1 Pay=1 &sql{ INSERT INTO zakaz SET dost=:Dost, pay=:Pay; } q:$q 1 q |
не совсем понял, это шутка?)) это вообще какой язык?))
|
Цитата:
Цитата:
Но не ужели идея не понятна? :blink: Если dost=1, то pay просто равен 1! И пиши дальше в БД... А еще писал ранее мол я пхэпист... Какой же ты пхэпист? Если таких простых приемов не знаешь? :D |
суть уловил, пытаюсь теперь ее реазизовать..
Пишу: //////бред но чет не работает.. |
Часовой пояс GMT +3, время: 10:51. |