Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 24.03.2017, 09:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sprutenok000
последний выбор заполняется в 3-ем списке
Это не так. Связанными списки называются потому, что их связывают данные, а не потому, что они по порядку расположены. Нельзя получить/построить последний список без выбора во всех предыдущих. В данном случае выбор в предпоследнем списке определяет данные последнего списка (адрес данных).

Другими словами - достаточно одного обработчика события onchange набора списков, чтобы построить все списки. А "последний выбор в 4-ом списке, а соответственно в 4-й список попадает некое значение правильно" к построению списков отношения не имеет. Если для всех списков единый обработчик, значит в нем должна быть проверка текущего списка, и если это последний, значит это конечная цель - нужно его значение, получайте.
Ответить с цитированием
  #22 (permalink)  
Старый 24.03.2017, 09:40
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

тобишь вот таким образом я не получу значение List4 ,?
var rezult = $("#List4").val();
Ответить с цитированием
  #23 (permalink)  
Старый 24.03.2017, 10:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Почему, получим, если и в рамках JQ.

Вы не понимаете самой сути связанных списков, а если точнее - зависимых списков. Код, что вы на шли на просторах интернета, даже с натяжкой назвать зависимыми списками нельзя. Это ахинея полная, жалкая пародия, имитация связей.

Самый яркий пример зависимых списков, это адресация. Конечной целью в таких списках например может быть получение улиц в конкретной стране, конкретном регионе и его городе. Выбор каждого списка, это запрос в базу - сначала по идентификатору страны выбираются ее регионы, следующий запрос это уже запрос по идентификатору страны и идентификатору региона, и получают список городов, и т.д.

Если же сделать запрос "получить все данные стран", то это будет древовидное описание данных, то есть это иерархия, зависимость данных. А то что у вас в "найденном в интернете", то в них связь может быть только от богатой фантазии. Хотя для удобства обращения к данным, которые загодя отдаются клиенту, их можно представить и не в виде дерева, но в этом случае "зависимость" данных возлагается на сценарий.

Хотите понять как работает это, как должно работать, значит на простом примере постройте зависимые данные, а затем построение по ним связанных списков. Может тогда поймете, что в таком наборе есть конечная цель, последний выбор.
Ответить с цитированием
  #24 (permalink)  
Старый 24.03.2017, 16:13
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

я суть понял теперь объясню почему именно этот скрипт а не PHP. так как эта страничка должна открываться на телефоне а телефон PHP не понимает тобишь должно быть все скажем так переносимо и рабоче везде а не только на сервере
Ответить с цитированием
  #25 (permalink)  
Старый 24.03.2017, 16:27
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

если бы найти тоже самое но на чисто JQ в смысле без PHP и ajax то было бы вооще шикарно
Ответить с цитированием
  #26 (permalink)  
Старый 24.03.2017, 18:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sprutenok000
объясню почему именно этот скрипт а не PHP
А кто говорил о РНР? Просто пример о запросе данных на сервере, а это не обязательно РНР.

Сообщение от Sprutenok000
эта страничка должна открываться на телефоне а телефон PHP не понимает
То есть браузер настольной системы понимает РНР?

Не важно, на стольной ли системе, в мобильной ли открывается страница, эта страница есть HTML, а активные сценарии в ней, это Javascript. Серверного в таких страницах нет и в помине. jQuery это и есть Javascript, фреймворк написанный на Javascript. При этом страница в браузере мобильной системы может обмениваться данными с сервером, это ничем не запрещается.

Вот какая странность в вашем рассуждении - "но я то делаю последний выбор в 4-ом списке, а соответственно в 4-й список попадает некое значение правильно?". Что значит попадает? Последний список на момент выбора в нем заполнен, и выбор в нем, это просто выбор опции, а ее значение и будет являться значением списка ($("#List4").val()).

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
var data = {
    'a' : {
        '1' : {'1': 'Var 2-1-1', '2': 'Var 2-1-2'},
        '2' : {'1': 'Var 2-2-1', '2': 'Var 2-2-2'}  
    },
    'b' : {
        '1' : {'1': 'Var 3-1-1', '2': 'Var 3-1-2'},
        '2' : {'1': 'Var 3-2-1', '2': 'Var 3-2-2'}  
    }
}; 

$(function() {
    //заполнение списков и выбор в последнем списке
    //при этом назвать списки зависимыми можно только номинально:
    //1) данные не связаны
    //2) стоит убрать disabled у списков и можно будет заполнять списки произвольно
    //то есть, это "имитация" связанных списков
    //на самом деле сценарий просто задает последовательность заполнения списка от первого до... 
    var lst = $('#list').on('change', 'select', function() {
        if(this.value) {
            if(this.name != 'c') {
                
                var i = lst.index(this)+1, //индекс следующего списка от текущего
                    src = lst.eq(i); //следующий список
                   
                //очищаем все последюущие списки от текущего и запрещаем выбор в них
                lst.slice(i).empty().prop('disabled', 1)
                
                //получаем данные для следующего списка, строим его и разрешаем в нем выбор 
                src.append('<option value="">Select...</option>').prop('disabled', 0)
                $.each(data[this.name][this.value], function(k, v) {
                    src.append('<option value="'+k+'">'+v+'</option>')
                })
            } else alert(this.value) //иначе выбор в последнем списке - цель
        }
    }).find('select');
});
</script> 
</head>
<body>
<form id="list" autocomplete="off">
    <select name="a">
        <option value="">Select...</option>
        <option value="1">Var 1-1</option>
        <option value="2">Var 1-2</option>
    </select>
    <select name="b" disabled>
    </select>
    <select name="c" disabled>
    </select>
</form>
</body>
</html>

Последний раз редактировалось laimas, 24.03.2017 в 18:42.
Ответить с цитированием
  #27 (permalink)  
Старый 24.03.2017, 19:24
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

практически тоже самое за исключением того что в scripte изменение любой позиции ведет за собой дальнейшие изменения а в JQ нет только первый ведет к изменениям, а так то я согласен по поводу связанных списков но вся беда в том что перерыв интернет исчерпывающие сведения по какому либо вопросу найти очень проблематично , а если еще учесть что разные плюшки называются по разному и объяснения этому как таковой нету то пока до кого либо дойдет почему то или иное выражение именно так называется пройдет куча времени. Извини если много глупых вопросов задаю так как практически все что можно найти объясняется следующим образом (образно):
возьмите А прибавьте или отнемите Б и вы получите С а вот С вы можете вставить или вывести куда либо .
Примерно все!!!))))
А сути то не раскрыто почему именно А почему именно Б и какие варианты вообще есть все каментарии разчитаны на продвинутого пользователя и некто не задумывается что у нас в инете уйма одаренных людей которым нужно разживать и в рот положить по другому недаходит а некоторые просто стесняются спросить чо да как.
Ответить с цитированием
  #28 (permalink)  
Старый 24.03.2017, 19:30
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

практически тоже самое за исключением того что в scripte изменение любой позиции ведет за собой дальнейшие изменения а в JQ нет только первый ведет к изменениям, а так то я согласен по поводу связанных списков но вся беда в том что перерыв интернет исчерпывающие сведения по какому либо вопросу найти очень проблематично , а если еще учесть что разные плюшки называются по разному и объяснения этому как таковой нету то пока до кого либо дойдет почему то или иное выражение именно так называется пройдет куча времени. Извини если много глупых вопросов задаю так как практически все что можно найти объясняется следующим образом (образно):
возьмите "А" прибавьте или отнимите "Б" и вы получите С а вот С вы можете вставить или вывести куда либо .
Примерно все!!!))))
А сути то не раскрыто почему именно А почему именно Б и какие варианты вообще есть все, комментарии рассчитаны на продвинутого пользователя и некто не задумывается что у нас в интернете уйма одаренных людей которым нужно разжевать и в рот положить по другому ни доходит а некоторые просто стесняются спросить чо да как.
Ответить с цитированием
  #29 (permalink)  
Старый 24.03.2017, 19:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sprutenok000
практически тоже самое за исключением того что в scripte изменение любой позиции ведет за собой дальнейшие изменения а в JQ нет только первый ведет к изменениям
Не понимаете вы ничего. Этот код и выполняет то, что у вас есть, но только без никчемных таймеров и какой-то синхронизации. Вы либо выдрали откуда-то код где может это и требовалось, либо это и есть полная ахинея.

Не нужно никаких таймеров для данной задачи, а то что это никак не связанные списки я уже устал повторять, и в комментарии к коду еще раз отмечено почему.

Разжевывать мне просто некогда, нет на это времени, придется самому вникать в код и учиться понимать...
Ответить с цитированием
  #30 (permalink)  
Старый 24.03.2017, 20:00
Аспирант
Отправить личное сообщение для Sprutenok000 Посмотреть профиль Найти все сообщения от Sprutenok000
 
Регистрация: 11.03.2017
Сообщений: 42

я понял спасибо большое и на этом
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
При наведении на определенный блок, DIV, появляется скрытое сожержимое kismedia Элементы интерфейса 9 22.05.2015 19:15
Передать div блок на другую страницу по ссылке kostant jQuery 5 04.09.2013 10:29
Скрытие блока div и его составляющих pomuk123 Events/DOM/Window 6 14.02.2011 10:31
Закрытие прозрачного div при щелчке мыши в любой его области mav1 Элементы интерфейса 8 09.02.2011 19:25