|
|
|
|
|
для: OLi
(28.10.2012 в 13:19)
| | Трудно даже вообразить, что за таблицы у вас при этом.
Есть авто, которые могут иметь самые разные характеристики, а это значит хранить их лучше в другой таблице связанной с первой. Каждая из этих таблиц предполагает добавление, а значит и уникальность записей, и каким образом может быть обеспечена уникальность их, если представить все эти записи в одной плоскости?
Да ладно, бог с ними с вашими уникальностями, может это так кажется, что у вас бардак, потому, что не видно полной картины.
Но взгляните на сайт казахский еще раз - есть набор, и при этом пользователя никто не обязывает его выбрать в этом наборе что-то. И есть выбор "все", и даже не зная всей конкретики, можно предположить, что это выбор по умолчанию.
А что у вас?
Я вам давал ссылки на методы, один из них .data(). Этот метод закрепляет за объектом любой набор данных. А это означает, что элементы родители элементов набора могут хранить выбор из этого набора.
А что у вас?
Вы дергаете страницу добавляя/удаляя элемент, что затратно само по себе, а хуже всего то, что этого в данном случае не требуется. И делаете вы это некорректно, и можно выбрать два одинаковых ваших "уникальных" значения.
Пример с учетом того, что пользователь может не сделать выбор в одной или нескольких позициях, и об этом сервер должен знать, а факт того, что в базе нет id значений равных 0, то это и будет значением по умолчанию ("все"):
<script>
$(function(){
//устанавливаем значения выбора по умолчанию и обработчик
$('#set div[id |= box]')
.data('val',0)
.on('click', 'span[val]', function(){
$(this).parent()
.data('val',$(this).attr('val'))//запомнить выбор
.children()
.css('background','#fff');
$(this).css('background','#ccc');
});
//отправка формы
$('form').submit(function(){
//формируем и добавляем список
var s = '<select name=ids[] multiple style="display:none">';
$('#set div').each(function(){
s += '<option value='+$(this).data('val')+' selected>';
});
$(this).append(s+'</select>');
});
});
</script>
<div id="set">
<div id="box-marka"><span val="23">VW</span> <span val="19">Mersedes</span></div>
<div id="box-model"><span val="13">Golf</span> <span val="28">A4</span></div>
<div id="box-petrol"><span val="132">Дизель</span> <span val="285">Бензин</span></div>
</div>
<form action="">
<input name="set" value="value" />
<input type="submit" value="GO" />
</form>
|
Возможно родитель может содержать и иные элементы div, поэтому обработчик устанавливается на элементы имен по их префиксам, по тем же соображениям делегируются события только тех элементов, у которых есть атрибут val.
Итого, всего один махонький обработчик, вместо трех, и без всякого шаманства основанного на некой глобальной уникальности. | |
|
|
|
|
|
|
|
для: OLi
(28.10.2012 в 13:19)
| | Пример вполне работающий, только ошибка в том, что если выбрать только данные из первого списка (при этом были выбраны данные из последующих списков), то они затирают | |
|
|
|
|
|
|
|
для: confirm
(28.10.2012 в 08:56)
| | У меня все значения уникальны, т-е формирующийся список будет иметь уникальные ID. | |
|
|
|
|
|
|
|
для: Deed
(28.10.2012 в 08:49)
| | Повторяю для сугубо одаренных - тыкайте сами, коли вам надо, а я удостоверился, что это полная хрень.
Уникальные? А вы уверены в этом? Это вы этот пример видите, но не знаете что есть на самом деле. А если вы считаете, что автоинкремент базы данных генерирует уникальность не только в одной таблице, но и уникальность среди таблиц, то заблуждаетесь.
Насчет последовательности, которая не играет роли, в свете вышесказанного, то вы несете бред, ни чем не лучше кода, который считаете идеальным.
Вот каков у него код, такие у него и запросы к базе, от которых волосы дыбом, иначе не скажешь.
И заметьте, в адрес автора я ни слова ни сказал обидного, так что без адвокатов, пожалуйста. | |
|
|
|
|
|
|
|
для: confirm
(28.10.2012 в 02:54)
| | Подбирайте слова.
У него все числовые значения атрибута "rel" уникальны и их взаимное расположение в массиве роли не играет.
Потыкайте кнопки, а потом будете писать про "одно значение из одного набора". | |
|
|
|
|
|
|
|
для: Deed
(27.10.2012 в 21:09)
| | И к чему вы мне эту хрень показываете? Вы блин не понимаете простой вещи, что ваш муьтисписок вернет во втором случае два значения сдвинуты в начало. То есть, модель, которую вы могли бы ожидать вторым элементом массива, в этом случае придет первым.
Даже на этой хрени, что вы указываете, этот баг виден, и тем не менее вы упорно это делаете. Плюс и другой баг заметен - не соблюдается ваше же требование по одному значению из одного набора.
Вы так видимо все и делаете, первое что на ум взбредет?
Сделайте и отправьте то, что я вам писал, это будет лучше для понимания того, что ваш код бред полный. | |
|
|
|
|
|
|
|
|
для: OLi
(27.10.2012 в 17:04)
| | Создайте форму в которой поместите три списка каждый с двумя опциями (для уяснения этого хватит). В списках не делайте выбранных по умолчанию опций. Назовите каждый список, например, as[]. Выберите опции только второго и третьего списка. Отправьте форму, и посмотрите что получили.
А теперь замените эти три списка одним со множественным выбором, с тремя опциями, выберите в нем также вторую и третью опцию. Отправляйте форму, что на этот раз получаете? | |
|
|
|
|
|
|
|
для: confirm
(27.10.2012 в 15:51)
| | Если марка не выбрана - то модели не подгрузятся. Какие 2 остальные? | |
|
|
|
|
|
|
|
для: OLi
(27.10.2012 в 15:47)
| | А вы представляете, что получите, если я не сделаю выбора марки авто, а только два остальных, если будете использовать такой список? | |
|
|
|
|