2016-09-21 4 views
1

Фон: после достижения определенного состояния пользователь не может изменять данные в полях формы в пользовательском интерфейсе.Фильтр через массив элементов управления и их управление

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

В настоящее время реализация предназначена для поиска по массиву всех возможных элементов управления (массив из 600), и единственные, которые не соответствуют идентификатору элементов управления в состоянии, отключены.

Примерами element.getId() будут «__xmlview2--SaveBtn», «__xmlview2-Page-SaveBtn». Это в основном идентификаторы элементов управления.

//for each control that is not the following controls perform the logic within this statement. 

controls.forEach(function(element){ 
    if(element.getId().indexOf("Page-") == -1 && 
     element.getId().indexOf("ControlName1") == -1 && 
     element.getId().indexOf("ControlName2") == -1 && 
     element.getId().indexOf("ControlName3") == -1 && 
     element.getId().indexOf("ControlName4") == -1 && 
     element.getId().indexOf("ControlName5") == -1) { 

      //do the logic fr disabling fields here 
    )}; 

Каков наилучший способ сделать этот код более четким, чтобы было очевидно, что это делает? Как бы вы это сделали? Благодарю.

+1

, пожалуйста, добавьте несколько примеров 'element.getId()'. –

+1

Отредактированный вопрос, чтобы добавить примеры element.getId() – daredadevil

ответ

1

Предлагаю положить строки в массив и проверить снова с помощью Array#every.

var items = ["Page-", "ControlName1", "ControlName2", "ControlName3", "ControlName4", "ControlName5"], 
    id = element.getId(); 

if (items.every(function (item) { return id.indexOf(item) == -1; })) { 
    // do the logic for disabling fields here 
)};