Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Проверить, если ли в select

Сообщения:  [1-10]    [11-20]   [21-30]  [31-37] 

 
 автор: confirm   (28.10.2012 в 14:33)   письмо автору
 
   для: 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:25)   письмо автору
 
   для: OLi   (28.10.2012 в 13:19)
 

Пример вполне работающий, только ошибка в том, что если выбрать только данные из первого списка (при этом были выбраны данные из последующих списков), то они затирают

  Ответить  
 
 автор: OLi   (28.10.2012 в 13:19)   письмо автору
 
   для: confirm   (28.10.2012 в 08:56)
 

У меня все значения уникальны, т-е формирующийся список будет иметь уникальные ID.

  Ответить  
 
 автор: confirm   (28.10.2012 в 08:56)   письмо автору
 
   для: Deed   (28.10.2012 в 08:49)
 

Повторяю для сугубо одаренных - тыкайте сами, коли вам надо, а я удостоверился, что это полная хрень.
Уникальные? А вы уверены в этом? Это вы этот пример видите, но не знаете что есть на самом деле. А если вы считаете, что автоинкремент базы данных генерирует уникальность не только в одной таблице, но и уникальность среди таблиц, то заблуждаетесь.
Насчет последовательности, которая не играет роли, в свете вышесказанного, то вы несете бред, ни чем не лучше кода, который считаете идеальным.
Вот каков у него код, такие у него и запросы к базе, от которых волосы дыбом, иначе не скажешь.

И заметьте, в адрес автора я ни слова ни сказал обидного, так что без адвокатов, пожалуйста.

  Ответить  
 
 автор: Deed   (28.10.2012 в 08:49)   письмо автору
 
   для: confirm   (28.10.2012 в 02:54)
 

Подбирайте слова.
У него все числовые значения атрибута "rel" уникальны и их взаимное расположение в массиве роли не играет.
Потыкайте кнопки, а потом будете писать про "одно значение из одного набора".

  Ответить  
 
 автор: confirm   (28.10.2012 в 02:54)   письмо автору
 
   для: Deed   (27.10.2012 в 21:09)
 

И к чему вы мне эту хрень показываете? Вы блин не понимаете простой вещи, что ваш муьтисписок вернет во втором случае два значения сдвинуты в начало. То есть, модель, которую вы могли бы ожидать вторым элементом массива, в этом случае придет первым.
Даже на этой хрени, что вы указываете, этот баг виден, и тем не менее вы упорно это делаете. Плюс и другой баг заметен - не соблюдается ваше же требование по одному значению из одного набора.
Вы так видимо все и делаете, первое что на ум взбредет?
Сделайте и отправьте то, что я вам писал, это будет лучше для понимания того, что ваш код бред полный.

  Ответить  
 
 автор: Deed   (27.10.2012 в 21:09)   письмо автору
 
   для: OLi   (27.10.2012 в 17:04)
 

http://jsfiddle.net/kilotonna/FUsmZ/16/

  Ответить  
 
 автор: confirm   (27.10.2012 в 17:18)   письмо автору
 
   для: OLi   (27.10.2012 в 17:04)
 

Создайте форму в которой поместите три списка каждый с двумя опциями (для уяснения этого хватит). В списках не делайте выбранных по умолчанию опций. Назовите каждый список, например, as[]. Выберите опции только второго и третьего списка. Отправьте форму, и посмотрите что получили.
А теперь замените эти три списка одним со множественным выбором, с тремя опциями, выберите в нем также вторую и третью опцию. Отправляйте форму, что на этот раз получаете?

  Ответить  
 
 автор: OLi   (27.10.2012 в 17:04)   письмо автору
 
   для: confirm   (27.10.2012 в 15:51)
 

Если марка не выбрана - то модели не подгрузятся. Какие 2 остальные?

  Ответить  
 
 автор: confirm   (27.10.2012 в 15:51)   письмо автору
 
   для: OLi   (27.10.2012 в 15:47)
 

А вы представляете, что получите, если я не сделаю выбора марки авто, а только два остальных, если будете использовать такой список?

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-37] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования