JavaScript в LiveCycle - наличие объектов
JavaScript Гении,
Требуемый результат для "рекомендовать" и "авторизация", чтобы показать, если один из двух флажков установлены.
/*For Checkbox1: Fund1 */
if (this.rawValue == "1") {
this.resolveNode("fund1").presence = "visible";
this.resolveNode("recommend").presence = "visible";
this.resolveNode("authorization").presence = "visible";
} else {
this.resolveNode("fund1").presence = "hidden";
this.resolveNode("recommend").presence = "hidden";
this.resolveNode("authorization").presence = "hidden";
}
/*For Checkbox2 - Fund2: */
if (this.rawValue == "1") {
this.resolveNode("fund2").presence = "visible";
this.resolveNode("recommend").presence = "visible";
this.resolveNode("authorization").presence = "visible";
} else {
this.resolveNode("fund2").presence = "hidden";
this.resolveNode("recommend").presence = "hidden";
this.resolveNode("authorization").presence = "hidden";
}
Если я поставлю галочку, нужные объекты "рекомендовать" и "авторизация" будут видны. Если я установлю оба флажка, то сниму один, объекты "рекомендовать" и "авторизация" скрываются. Есть флажки для других фондов, которые имеют другое требование одобрения в форме.
Что вызывает проблему? Что это решает? Что является более чистым способом написания кода? Все указания приветствуются.
1 ответ
- Создайте Script Object для хранения всех ваших утилитных функций и дайте ему конкретное имя.
Там вы должны создать функции для того, чтобы сделать объект видимым и невидимым. Это не обязательно, но такая структура уменьшит количество глупых ошибок (например, пропущены некоторые буквы в слове "видимый" и т. Д.):
function setVisible(field){ if (field === null) { //do what ever you want with an error } if (field === undefined) { //do what ever you want with an error } if (field instanceof Array) { //do what ever you want with an error } field.presence = "visible"; } function setInvisible(field){ if (field === null) { //do what ever you want with an error } if (field === undefined) { //do what ever you want with an error } if (field instanceof Array) { //do what ever you want with an error } field.presence = "invisible"; }
Создайте функции для установки необходимых состояний для авторизации и рекомендованных объектов:
function setStateAuth(){ if(Page1.CheckBox1.rawValue == "1" || Page1.CheckBox2.rawValue == "1"){ setVisible(Page1.Authorization); }else{ setInvisible(Page1.Authorization); } } function setStateRec(){ if(Page1.CheckBox1.rawValue == "1" || Page1.CheckBox2.rawValue == "1"){ setVisible(Page1.Recommend); }else{ setInvisible(Page1.Recommend); } }
В событии click ваших методов вызова CheckBox1 для настройки аутентификации. и рек. государство. А также установить видимость для объекта Fund1.
Lib.setStateAuth(); Lib.setStateRec(); if(this.rawValue == "1"){ Lib.setVisible(Fund1); }else{ Lib.setInvisible(Fund1); }
В событии click вашего CheckBox2 вызовите методы для настройки auth. и рек. государство. А также установить видимость для объекта Fund2.
Lib.setStateAuth(); Lib.setStateRec(); if(this.rawValue == "1"){ Lib.setVisible(Fund2); }else{ Lib.setInvisible(Fund2); }
Обратите внимание, что работа с объектами с использованием метода resolNode не рекомендуется (из-за проблем с производительностью). Итак, если у вас есть конкретное, а не динамическое количество страниц, лучше назвать все и ссылаться на них, используя их имена. Как это сделано в образце, я сделал