2015-04-22 2 views
5

Укороченного вариант: Как, с помощью JavaScript или JQuery, я динамически переназначать выбранного значения динамически генерируемого Мультиселектор поля значения по умолчанию при определенных условиях будут выполнены на изменить (выбрать пользователя) в другом?Обновления выбранных значений динамической Multiselectors в Pentaho-CDE

Длинная версия:

У меня есть три уровня multiselectors (государство, Метро Площадь (ака MSA), округ) динамически зависит друг от друга, так что только округа и муниципальные районы, пересекающие выбранных состояний отображаются в соответствующие селекторы.

Моя проблема заключается в том, что если я выберу MSA внутри, скажем, в Мэриленде, а затем нажмите на Техас, моя таблица, в которой сбрасывается фильтр мультиселекторов (параметризованный запрос MDX).

Выполнение журналов ошибок в Catalina.out от Pentaho, кажется, что параметр селектора MSA (Metro Area) становится неопределенным, если выбрано состояние, которое не содержит ранее выбранный MSA.

Я хотел бы сделать так, чтобы при выборе нового состояния или группы состояний, которые не включают выбранные MSA или округа, эти селекторы возвращаются к значению по умолчанию («Все»). Я JQuery и JavaScript newby, поэтому мне нужно как можно больше деталей, но при этом быть внимательным к вашему времени.


Дополнительные детали, если это необходимо:

Значения в MSA (Metro Area) изменения селектора в зависимости от состояния (ов), которые выбраны, и селектор округа, зависит от государства и Metro Area , Это происходит на странице HTML (созданной панелью CDE Pentaho). Источником данных для каждого является параметризованный SQL-запрос (выполненный Pentaho).

Когда опция «All» для округа и MSA выбран я могу безопасно изменить выбор состояния: working

При выборе нечто иное, чем «все» для округа и MSA я не могу изменить изменить выбор состояния без приборной панели сбою: crashing

данные, поступающие из SQL является массив из двух столбцов, с MDX-форматированного значения и четко текстовую метку, с All Value для указания родителя MDX «Все» значение ,

+0

Я не думаю, что этот вопрос слишком широк. Я специально прошу об одном: как динамически переназначить значение мультиселекторного блока при определенных условиях на изменение в другом. Это почти чистый JQuery, все материалы Pentaho и SQL - это просто контекст. –

+0

Я думаю, что вы можете удалить большую часть контекста своего вопроса, например SQL-запрос, это не имеет отношения к заданному jQuery вопросу, который вы задаете. Кроме того, вы должны показать текущий исходный код jQuery, который у вас есть, поэтому мы не можем видеть, что вы делаете неправильно. – rednaw

+0

@rednaw, это рутина, страница создана с помощью инструмента Pentaho BI, но она позволяет настраивать с помощью вставки ваших собственных jquery или js-операторов в предварительном и пост-исполнении, а также после и после изменения. –

ответ

2

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

$('.one-input').change(function() { 

    if ($(this).val() == 'something') { 
     $('.other-input').val('default-value'); 
    } 

}); 
+0

Спасибо, хотя на самом деле я не искал, он определенно послал меня в правильном направлении. –

1

решаемые его. Большая часть кода была специфичной для Pentaho-CDE, а именно потому, что вместо того, чтобы пытаться напрямую изменить значение селектора, я устанавливаю слушатель для параметра, который сохраняет значение селектора в самом селекторе и изменил его.

Разместил код ниже в Pentaho-CDE как ресурс JS, затем использовал вариант в ответе @ renaw .change(), чтобы динамически обновлять все мои компоненты по выбранным значениям по умолчанию на случай, если их ранее выбранное значение было равно исчезают из нового доступного набора опций.

$(document).ready(function() { 
    // set default value to start with 
    var all_msas = "[Metro Area]"; 
    var all_counties = "[County]"; 
    var all_zips = "[ZIP]"; 
    Dashboards.fireChange("msa_param", all_msas); 
    Dashboards.fireChange("county_param", all_counties); 
    Dashboards.fireChange("zip_param", all_zips); 


    // what's happening on select 
    $("#stateSelectorRow").on("change", function() { 
      Dashboards.fireChange("msa_param", all_msas); 
      Dashboards.fireChange("county_param", all_counties); 
      Dashboards.fireChange("zip_param", all_zips); 
    }); 

    $("#msaSelectorRow").on("change", function() { 
     Dashboards.fireChange("county_param", all_counties); 
     Dashboards.fireChange("zip_param", all_zips); 
    }); 

    $("#countySelectorRow").on("change", function() { 
     Dashboards.fireChange("zip_param", all_zips); 
    }); 

})