24.03.2017, 09:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Sprutenok000
|
последний выбор заполняется в 3-ем списке
|
Это не так. Связанными списки называются потому, что их связывают данные, а не потому, что они по порядку расположены. Нельзя получить/построить последний список без выбора во всех предыдущих. В данном случае выбор в предпоследнем списке определяет данные последнего списка (адрес данных).
Другими словами - достаточно одного обработчика события onchange набора списков, чтобы построить все списки. А "последний выбор в 4-ом списке, а соответственно в 4-й список попадает некое значение правильно" к построению списков отношения не имеет. Если для всех списков единый обработчик, значит в нем должна быть проверка текущего списка, и если это последний, значит это конечная цель - нужно его значение, получайте.
|
|
24.03.2017, 09:40
|
Аспирант
|
|
Регистрация: 11.03.2017
Сообщений: 42
|
|
тобишь вот таким образом я не получу значение List4 ,?
var rezult = $("#List4").val();
|
|
24.03.2017, 10:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Почему, получим, если и в рамках JQ.
Вы не понимаете самой сути связанных списков, а если точнее - зависимых списков. Код, что вы на шли на просторах интернета, даже с натяжкой назвать зависимыми списками нельзя. Это ахинея полная, жалкая пародия, имитация связей.
Самый яркий пример зависимых списков, это адресация. Конечной целью в таких списках например может быть получение улиц в конкретной стране, конкретном регионе и его городе. Выбор каждого списка, это запрос в базу - сначала по идентификатору страны выбираются ее регионы, следующий запрос это уже запрос по идентификатору страны и идентификатору региона, и получают список городов, и т.д.
Если же сделать запрос "получить все данные стран", то это будет древовидное описание данных, то есть это иерархия, зависимость данных. А то что у вас в "найденном в интернете", то в них связь может быть только от богатой фантазии. Хотя для удобства обращения к данным, которые загодя отдаются клиенту, их можно представить и не в виде дерева, но в этом случае "зависимость" данных возлагается на сценарий.
Хотите понять как работает это, как должно работать, значит на простом примере постройте зависимые данные, а затем построение по ним связанных списков. Может тогда поймете, что в таком наборе есть конечная цель, последний выбор.
|
|
24.03.2017, 16:13
|
Аспирант
|
|
Регистрация: 11.03.2017
Сообщений: 42
|
|
я суть понял теперь объясню почему именно этот скрипт а не PHP. так как эта страничка должна открываться на телефоне а телефон PHP не понимает тобишь должно быть все скажем так переносимо и рабоче везде а не только на сервере
|
|
24.03.2017, 16:27
|
Аспирант
|
|
Регистрация: 11.03.2017
Сообщений: 42
|
|
если бы найти тоже самое но на чисто JQ в смысле без PHP и ajax то было бы вооще шикарно
|
|
24.03.2017, 18:17
|
Профессор
|
|
Регистрация: 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.
|
|
24.03.2017, 19:24
|
Аспирант
|
|
Регистрация: 11.03.2017
Сообщений: 42
|
|
практически тоже самое за исключением того что в scripte изменение любой позиции ведет за собой дальнейшие изменения а в JQ нет только первый ведет к изменениям, а так то я согласен по поводу связанных списков но вся беда в том что перерыв интернет исчерпывающие сведения по какому либо вопросу найти очень проблематично , а если еще учесть что разные плюшки называются по разному и объяснения этому как таковой нету то пока до кого либо дойдет почему то или иное выражение именно так называется пройдет куча времени. Извини если много глупых вопросов задаю так как практически все что можно найти объясняется следующим образом (образно):
возьмите А прибавьте или отнемите Б и вы получите С а вот С вы можете вставить или вывести куда либо .
Примерно все!!!))))
А сути то не раскрыто почему именно А почему именно Б и какие варианты вообще есть все каментарии разчитаны на продвинутого пользователя и некто не задумывается что у нас в инете уйма одаренных людей которым нужно разживать и в рот положить по другому недаходит а некоторые просто стесняются спросить чо да как.
|
|
24.03.2017, 19:30
|
Аспирант
|
|
Регистрация: 11.03.2017
Сообщений: 42
|
|
практически тоже самое за исключением того что в scripte изменение любой позиции ведет за собой дальнейшие изменения а в JQ нет только первый ведет к изменениям, а так то я согласен по поводу связанных списков но вся беда в том что перерыв интернет исчерпывающие сведения по какому либо вопросу найти очень проблематично , а если еще учесть что разные плюшки называются по разному и объяснения этому как таковой нету то пока до кого либо дойдет почему то или иное выражение именно так называется пройдет куча времени. Извини если много глупых вопросов задаю так как практически все что можно найти объясняется следующим образом (образно):
возьмите "А" прибавьте или отнимите "Б" и вы получите С а вот С вы можете вставить или вывести куда либо .
Примерно все!!!))))
А сути то не раскрыто почему именно А почему именно Б и какие варианты вообще есть все, комментарии рассчитаны на продвинутого пользователя и некто не задумывается что у нас в интернете уйма одаренных людей которым нужно разжевать и в рот положить по другому ни доходит а некоторые просто стесняются спросить чо да как.
|
|
24.03.2017, 19:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Sprutenok000
|
практически тоже самое за исключением того что в scripte изменение любой позиции ведет за собой дальнейшие изменения а в JQ нет только первый ведет к изменениям
|
Не понимаете вы ничего. Этот код и выполняет то, что у вас есть, но только без никчемных таймеров и какой-то синхронизации. Вы либо выдрали откуда-то код где может это и требовалось, либо это и есть полная ахинея.
Не нужно никаких таймеров для данной задачи, а то что это никак не связанные списки я уже устал повторять, и в комментарии к коду еще раз отмечено почему.
Разжевывать мне просто некогда, нет на это времени, придется самому вникать в код и учиться понимать...
|
|
24.03.2017, 20:00
|
Аспирант
|
|
Регистрация: 11.03.2017
Сообщений: 42
|
|
я понял спасибо большое и на этом
|
|
|
|