Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Зависимые селекты или хочу то, хочу это...
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Зависимые селекты или хочу то, хочу это...

Страниц (1): [1]
 

1. Тали Сергей - 27 Июня, 2015 - 14:04:29 - перейти к сообщению
Доброго времени суток, друзья. Я еще в процессе обучения, и пишу первый сайт. И вот выскочила такая задача: необходимы 2 <select>-a зависимые друг от друга; то есть по выбору в первом - во втором должны появляться те позиции, которые соответствуют позиции выбранной в первом <select>; По выбору в одном из 2х<select>-ов должно перекидывать на другой шаблон и добавлять в него информацию из БД. Информация в <select>-ах тоже из БД и блок с <select>-ами подключен на всех ключевых страницах сайта. Подскажите пожалуйста порядок написания, примерный хотя бы; что использовать. А дальше я постараюсь сам, все таки хочется понять принцип (да и никто не будет это делать).
(Тематика сайта - космос (игра), а точнее карты - первый <select> - Галактики, второй - Системы в галактиках)
Спасибо.
Чуть не забыл, самое главное. Так как будет зависимость второго от первого, а при выборе <option>-a в первом <select>-e будет перебрасывать на другую страницу, важно чтобы ПЕРВЫЙ <select> не обнулялся, для возможности выбора систем принадлежащих этой галактике.
3. Тали Сергей - 27 Июня, 2015 - 16:52:52 - перейти к сообщению
DeepVarvar пишет:
http://forum.php.su/topic.php?forum=1&topic=8828&postid=1429822639#1429822639

Спасибо, буду разбираться
(Добавление)
DeepVarvarDeepVarvar

Благодарен за скрипт, но jqure пока знаю не так хорошо, немогли бы вы откоментировать этот блок____________________________ _______________________________

CODE (javascript):
скопировать код в буфер обмена
  1. childName = sel.attr('data-child');
  2.                                        
  3.                     if (childName) { child = initChain(childName);
  4.                         if (child) { child.attr('disabled', true); }
  5.                     sel.data('child', child);
  6.                     }

________________________________ ________________________________ _____



CODE (javascript):
скопировать код в буфер обмена
  1.         $(function() {
  2.  
  3.  
  4.                 initChain('level_one');
  5.  
  6.  
  7.                 function initChain(name)
  8.                 {
  9.                     var childName, child, sel = $('select[name="' + name + '"]');
  10.  
  11.                     if (!sel.length) { return false; }
  12.                                        
  13.                     childName = sel.attr('data-child');
  14.                                        
  15.                     if (childName) { child = initChain(childName);
  16.                         if (child) { child.attr('disabled', true); }
  17.                     sel.data('child', child);
  18.                     }
  19.                     sel.on('change', function() {
  20.                         var val = parseInt(sel.val(), 10);
  21.                         if (!val) {
  22.                             resetChain(child);
  23.                         } else if (child) {
  24.                             $.ajax({
  25.                                 type     : 'POST',
  26.                                 url      : '/selects-data.txt',
  27.                                 data     : {id: val},
  28.                                 dataType : 'json',
  29.                                 success  : function(response) {
  30.                                     setChain(child, response);
  31.                                 }
  32.                             });
  33.                         }
  34.                     });
  35.  
  36.                     return sel;
  37.                 }
  38.  
  39.                 function resetChain(sel)
  40.                 {
  41.                     if (sel) {
  42.                         resetChain(sel.data('child'));
  43.                         sel.html('').attr('disabled', true);
  44.                     }
  45.                 }
  46.  
  47.                 function setChain(sel, data)
  48.                 {
  49.                     var
  50.                         i,
  51.                         child = sel.data('child');
  52.  
  53.                     if (child) {
  54.                         resetChain(child);
  55.                     }
  56.                     sel.html('');
  57.                     for (i in data) {
  58.                         sel.append(
  59.                             '<option value="' + data[i].value +
  60.                             '">' + data[i].description + '</option>'
  61.                         );
  62.                     }
  63.                     sel.removeAttr('disabled');
  64.                 }
  65.  
  66.             });
4. DeepVarvar - 28 Июня, 2015 - 00:29:14 - перейти к сообщению
Кеширует элементы для того чтобы повторно не лазить в ДОМ
5. Тали Сергей - 28 Июня, 2015 - 09:12:02 - перейти к сообщению
DeepVarvar пишет:
Кеширует элементы для того чтобы повторно не лазить в ДОМ
Спасибо

 

Powered by ExBB FM 1.0 RC1