Цитата:
при выборе "Бухгалтерского документа" показывать див с id=Block1 function Selected(a) { var label = a.value; if (label==1) { document.getElementById("Block1").style.display='block'; document.getElementById("Block2").style.display='none'; document.getElementById("Block3").style.display='none'; document.getElementById("Block4").style.display='none'; document.getElementById("Block5").style.display='none'; }Иначе не показывать ничего. Пользователь будет выбирать, какой документ внести, далее выбирает тип документа (из выпадающего списка) и после выбора появляется необходимая форма, допустим div id=Block5 (форма). Я пробовал присвоить id элементу списка options, но скрипт к нему не обращается.. |
Цитата:
|
Цитата:
|
Цитата:
|
Логика это когда есть консеквент и антецедент, если бухгалтер, то бухгалтерские документы, а в выражении если бухгалтер, то Block1 никакой логики нет вообще. Это можно как угодно в скрипте связать, а эти связи НЕ образуют никакой логики, то есть ее не существует на странице.
|
Цитата:
Надо нарисовать модели, то есть дерево связей. Когда есть связи определенные моделью, вот тогда и появляется логика. Бухгатерские документы + Половой акт + Авансовый отчет + Налоговая декларация В машинно-читаемом виде пользуются xml или наша братия - json. Например var docs={ buh:{ title: Бухгатерские документы tip: Выберите тип документа options:{ a:Половой акт, b:Авансовый отчет, c:Налоговая декларация }, }, any{ /* по той же схеме */ } }; Теперь имея такую даже самую скромную модель, можно отрендерить по ней какие угодно интерфейсы в которых заложенная в модель "логика" сохранится железобетонно. |
MadMaxZZZ,
чтобы не писать лишнего в коде, то есть "если равно 1, то 1 показать, 2 - 5 скрыть, если равно 2, то показать 2, срыть 1, 3-5, и т.д." можно и нужно в таком случае использовать код мной показанный - имя блока = постоянное значение + значение опции. Но по вашему примеру первый содержит 7 опций, последняя со значением 6, а блоков "открываемых" всего 5. Я эту опции убрал из списка, ибо я понятия не имею какая там у вас логика заложена в скрипт. Было заявлено, что выбор этих списков определяет "свою" форму, но тогда вопрос - где формы? Если конечные списки также определяют форму, то почему "как вывести Block5 при выборе, допустим "Акт" или "Выполнение работ"", каким образом в блоке 5 появится для каждого выбора своя форма? Если "Акт" или "Выполнение работ" также форму также в блоке 5, то связать нужно и их опции с блоком 5. Это можно сделать. Но если и все остальные опции конечных списков открывают форму в последнем блоке, а у каждого она своя, где-то и как-то определенная, а значения "а, b, c" с ними связано, значит нужен общий обработчик для этих списков, который и выбирает и показывает форму в блоке 5, и последнее не требует при этом никаких if. |
Потому что можно дальше продолжать:
var docs={ buh:{ title: Бухгатерские документы tip: Выберите тип документа options:{ a:form{ title:Половой акт, fields:{ name:Введите occu: выведите loca: заведите }, /* по той же схеме */ b:Авансовый отчет, c:Налоговая декларация }, }, any{ /* по той же схеме */ } }; И когда хотя бы одна форма нормально описана, структура тупо вопроизводится копипастой и правкой для всех остальных самоподобных структур. Когда скриптопизец начинает кодить с рендера, с хтмля, он заведомо себя обрекает на вечный кактус в заднице. Потому что простота и легкость вначале, гарантирует сложность и тягость даже не в конце, а чуть дальше начала. Зато кажущиеся сложными и трудными методы в начале, освобождают рабочих и крестьян для досуга. |
Цитата:
|
Цитата:
Тогда отношения заводятся искусственно, но они именно заводятся ВИЗУАЛЬНО, то есть материально, ощутимо, оценимо в какой-то нормализованной форме, которая отождествляет именно данные, а не их какое-то там представление. Имея нормальные модели можно рендерить эти дебильные списки и формы как угодно. А когда оно тупо завязано в хмтле и скриптах - это сразу кактус четыре раза в жопу. |
Часовой пояс GMT +3, время: 19:25. |