Помогите сделать такой 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, время: 22:40. |