07.06.2015, 12:10
|
|
Новичок на форуме
|
|
Регистрация: 07.06.2015
Сообщений: 6
|
|
сделать 2 зависимых <select> от общего доступного числа значений
Приветствую,
к примеру имеем автобус в котором всего 10 мест, и надо выбрать сколько поедет взрослых и сколько детей.
нужно чтобы кол-во элементов в каждом <select> менялось в зависимости от выбранного в другом, чтобы суммарно было 10 человек и не было возможности выбрать больше чем можно.
к примеру
выбрав 6 взрослых я мог выбрать только 4х детей
или выбрав 2 детей я мог выбрать только 8 взрослых.
<select class="form-control" id="count_adult" name="count_adult">
<option value="1" price="160">1 adult - 160 Points</option>
<option value="2" price="320">2 adults - 320 Points</option>
<option value="3" price="480">3 adults - 480 Points</option>
<option value="4" price="640">4 adults - 640 Points</option>
<option value="5" price="800">5 adults - 800 Points</option>
<option value="6" price="960">6 adults - 960 Points</option>
<option value="7" price="1120">7 adults - 1120 Points</option>
<option value="8" price="1280">8 adults - 1280 Points</option>
<option value="9" price="1440">9 adults - 1440 Points</option>
<option value="10" price="1600">10 adults - 1600 Points</option>
</select>
<select class="form-control" id="count_child" name="count_child">
<option value="0" price="0">0 child - 0 Points</option>
<option value="1" price="120">1 child - 120 Points</option>
<option value="2" price="240">2 children - 240 Points</option>
<option value="3" price="360">3 children - 360 Points</option>
<option value="4" price="480">4 children - 480 Points</option>
<option value="5" price="600">5 children - 600 Points</option>
<option value="6" price="720">6 children - 720 Points</option>
<option value="7" price="840">7 children - 840 Points</option>
<option value="8" price="960">8 children - 960 Points</option>
<option value="9" price="1080">9 children - 1080 Points</option>
<option value="10" price="1200">10 children - 1200 Points</option>
</select>
помогите пожалуйста написать на jQuery
http://jsfiddle.net/xfw4jb4s/1/
|
|
07.06.2015, 12:34
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
vano44,
потом окажется что и 10 детей нельзя и что без взрослых нельзя, поэтому сначала дают выбирать только взрослых, а потом детей из расчёта оставшихся мест
|
|
07.06.2015, 12:59
|
|
Новичок на форуме
|
|
Регистрация: 07.06.2015
Сообщений: 6
|
|
Сообщение от рони
|
vano44,
потом окажется что и 10 детей нельзя и что без взрослых нельзя, поэтому сначала дают выбирать только взрослых, а потом детей из расчёта оставшихся мест
|
Поэтому 1 взрослый это минимальное значение
пс. хотя да можно переписать как вы говорите если это более простое решение..
Последний раз редактировалось vano44, 07.06.2015 в 13:09.
Причина: вникнул в смысл
|
|
07.06.2015, 13:15
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Зависимые селекта лимит общей суммы селекторов
похоже на зависимые селекты тоже можно ставить счётчик, как на открывашка.
jquery тут нафиг ненужна, но раз хочется ...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> - jsFiddle demo</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.3.js'></script>
<script>
$(function() {
var d = {
count_adult: $("#count_child option"),
count_child: $("#count_adult option")
};
el = {
count_adult: $("#count_child")[0],
count_child: $("#count_adult")[0]
};
$("#count_adult, #count_child").change(function() {
var a = this.id,
e = 10 - this.value,
b = el[a],
v = b.value;
b.options.length = 0;
$.each(d[a], function(a, c) {
c.value <= e && b.options.add(c)
});
b.value = v;
}).change()
});</script>
</head>
<body>
<select class="form-control" id="count_adult" name="count_adult">
<option value="1" price="160">1 adult - 160 Points</option>
<option value="2" price="320">2 adults - 320 Points</option>
<option value="3" price="480">3 adults - 480 Points</option>
<option value="4" price="640">4 adults - 640 Points</option>
<option value="5" price="800">5 adults - 800 Points</option>
<option value="6" price="960">6 adults - 960 Points</option>
<option value="7" price="1120">7 adults - 1120 Points</option>
<option value="8" price="1280">8 adults - 1280 Points</option>
<option value="9" price="1440">9 adults - 1440 Points</option>
<option value="10" price="1600">10 adults - 1600 Points</option>
</select>
<select class="form-control" id="count_child" name="count_child">
<option value="0" price="0">0 child - 0 Points</option>
<option value="1" price="120">1 child - 120 Points</option>
<option value="2" price="240">2 children - 240 Points</option>
<option value="3" price="360">3 children - 360 Points</option>
<option value="4" price="480">4 children - 480 Points</option>
<option value="5" price="600">5 children - 600 Points</option>
<option value="6" price="720">6 children - 720 Points</option>
<option value="7" price="840">7 children - 840 Points</option>
<option value="8" price="960">8 children - 960 Points</option>
<option value="9" price="1080">9 children - 1080 Points</option>
<option value="10" price="1200">10 children - 1200 Points</option>
</select>
</body>
</html>
Последний раз редактировалось рони, 07.06.2015 в 14:10.
|
|
07.06.2015, 13:33
|
|
Новичок на форуме
|
|
Регистрация: 07.06.2015
Сообщений: 6
|
|
Ого, я только почти переписал по вашему совету, чтоб сперва выбирать взрослых а потом давать детей, а вы красивое решение поставленной задачи предоставили.. Супер. Спасибо
|
|
07.06.2015, 13:38
|
|
Новичок на форуме
|
|
Регистрация: 07.06.2015
Сообщений: 6
|
|
только если поиграться вылезает косяк что значения во втором поле выбираются сами больше чем было.
если поставить не хочу детей, и выбрать больше взрослых дети возвращаются)
http://youtu.be/_waNlBKL6Zg
Сообщение от рони
|
jquery тут нафиг ненужна, но раз хочется ...
|
на ней получается короче и красивее, но она не обязательна )
Последний раз редактировалось vano44, 07.06.2015 в 13:40.
|
|
07.06.2015, 13:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
vano44,
непонял про косяк , несмотря на ваше кино . может опишите что вы делаите и на каком браузере
|
|
07.06.2015, 14:01
|
|
Новичок на форуме
|
|
Регистрация: 07.06.2015
Сообщений: 6
|
|
гугл хром,
http://youtu.be/oI37EKvkPY8
вот все действия с открытия.
просто к примеру выбрав 2 взрослых - уже сам выбирается 1 ребёнок
выбираешь 3 взрослых 2 ребёнка сами появляются.. да и на видео видно что она и в другую сторону глючит.
выбираю 6 детей - сразу 2 взрослых
в опере значения вообще выбираются такие что всегда 10 человек получается..
а хотелось бы чтобы везде работало, для удобства людей всё таки делаю)
Последний раз редактировалось vano44, 07.06.2015 в 14:11.
|
|
07.06.2015, 14:12
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
vano44,
это Google Chrome фигнёй страдает -- смотрите исправленный вариант пост 4
|
|
07.06.2015, 14:42
|
|
Новичок на форуме
|
|
Регистрация: 07.06.2015
Сообщений: 6
|
|
рони, отлично, везде работает. супер!)
пс, я написал уже свой вариант по вашему совету, но буду использовать ваше решение, как более красивое)
|
|
|
|