2015-12-10 3 views
0

Я полагаю, что это в конечном итоге может применяться как к объектам, так и к страницам. На данный момент, однако, меня больше интересуют страницы и подформы.В Adobe Livecycle (возможно, Javascript), как я могу ссылаться на несколько страниц/подстраниц, чтобы скрыть их одновременно?

Я хочу скрыть/показать несколько страниц на основе выпадающего меню. Я, конечно, искал эту тему. Никто, кажется, не спрашивает о том, что я прошу, и самые близкие вопросы отвечают только за один объект, а не за множественность. И у меня есть около 80 различных страниц/подформ, о которых нужно беспокоиться.

У меня есть раскрывающееся меню, которое, в зависимости от выбора, становится видимым для определенных страниц и подформ, которые были ранее скрыты. Тем не менее, я пытаюсь создать определенное прощение, так что если кто-то случайно выбирает неправильный элемент в раскрывающемся меню и возвращается к исправлению самих себя, либо (1) все связанные страницы возвращаются к состоянию по умолчанию скрытых , прежде чем продолжить движение вперед и сделать видимыми видимые выделения, или (2) каждый объект будет вручную назван и сказал бы вернуться к скрытию.

Единственный способ я нашел, чтобы сделать это следующим образом: потребляя

switch (newValue) 
{ 
    case "1": 
     this.resolveNode("subform_1").presence = "visible"; 
     this.resolveNode("subform_2").presence = "hidden"; 
     this.resolveNode("page_3").presence = "hidden"; 
     break; 

    case "2": 
     this.resolveNode("subform_1").presence = "hidden"; 
     this.resolveNode("subform_2").presence = "visible"; 
     this.resolveNode("page_3").presence = "hidden"; 
     break; 

    case "3": 
     this.resolveNode("subform_1").presence = "hidden"; 
     this.resolveNode("subform_2").presence = "hidden"; 
     this.resolveNode("page_3").presence = "visible"; 
     break; 
} 

Это утомительно, время и безвкусный. Вместо этого я хотел бы обратиться к нескольким объектам одновременно. Что-то вроде:

switch (newValue) 
{ 
    case "1": 
     this.resolveNode("subform_2", "page_3").presence = "hidden"; 
     this.resolveNode("sabform_1").presence = "visible"; 
     break; 

    case "2": 
     this.resolveNode("subform_1", "page_3").presence = "hidden"; 
     this.resolveNode("subform_2").presence = "visible"; 
     break; 

    case "3": 
     this.resolveNode("subform_1", "subform_2").presence = "hidden"; 
     this.resolveNode("page_3").presence="visible"; 
     break; 
} 

Я знаю, что это рассматривается как безвкусные и сам по себе, но, учитывая общий дизайн листа, схемы именования, и т.д., нет действительно никакого способа, чтобы иметь системный вызов все страниц или подформ, начинающихся с одних и тех же букв и т.п. Поэтому я должен был бы назвать каждого по отдельности. И это прекрасно! Но я попробовал миллион методов безрезультатно. Я просто хочу более конденсированный способ скрыть/сделать видимыми несколько страниц и подформ одновременно или запретить это, чтобы сбросить видимость по умолчанию.

+0

Большое спасибо за редактирование форматирования, я не мог понять, как это сделать. – Broklynite

ответ

0

Хорошие Люди в форумах Adobe были очень полезны и при условии, что following answer:

С массивом и методом ForEach() вы можете написать очень компактный сценарий для того чтобы сделать то, что вы после этого.

var aObjects = [[subpage_1, "1"], [subpage_2, "2"], [page_3", "3"]], 
    cSelection = xfa.event.change; 
// Loop through all elements in the array… 
aObjects.forEach(function (element) { 
    //… and set its presence 
    // element[0] is the first value of the nested array i.e. "subpage_1", element[1] is the second value i.e. "1" 
    element[0].presence = element[1] === cSelection ? "visible" : "hidden"; 
});