Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 更新Pentaho CDE中动态多选择器的选定值_Jquery_Pentaho_Pentaho Cde - Fatal编程技术网

Jquery 更新Pentaho CDE中动态多选择器的选定值

Jquery 更新Pentaho CDE中动态多选择器的选定值,jquery,pentaho,pentaho-cde,Jquery,Pentaho,Pentaho Cde,简短版本:如果在另一个框中的更改(用户选择)满足某些条件,我如何使用JavaScript或JQuery将动态生成的多选择器框的选定值动态重新指定为默认值? 长版本: 我有三个级别的多选择器(州、大都会区(又名MSA)、县),它们动态地相互依赖,因此在各自的选择器中只显示与所选州相交的县和大都会区 我的问题是,如果我在马里兰州选择一个MSA,然后单击德克萨斯州,我的多选民筛选表(参数化MDX查询)就会崩溃 根据Pentaho的catalina.out中的错误日志,当选择不包含先前选择的MSA的状态

简短版本:如果在另一个框中的更改(用户选择)满足某些条件,我如何使用JavaScript或JQuery将动态生成的多选择器框的选定值动态重新指定为默认值?

长版本:

我有三个级别的多选择器(州、大都会区(又名MSA)、县),它们动态地相互依赖,因此在各自的选择器中只显示与所选州相交的县和大都会区

我的问题是,如果我在马里兰州选择一个MSA,然后单击德克萨斯州,我的多选民筛选表(参数化MDX查询)就会崩溃

根据Pentaho的catalina.out中的错误日志,当选择不包含先前选择的MSA的状态时,MSA(Metro Area)选择器参数似乎变得未定义

我想这样做,当选择一个不包括当前所选MSA或County的新州或州组时,这些选择器将恢复为默认(“全部”)值。我是JQuery和JavaScript新手,因此我需要尽可能多的细节,同时还要考虑到您的时间


其他详细信息(如需要):

MSA(Metro Area)选择器中的值根据所选的州而变化,而County选择器则取决于州和Metro Area。这一切都发生在HTML页面上(由Pentaho的CDE仪表板生成)。每个数据库的数据源都是一个参数化SQL查询(由Pentaho执行)

选择县和MSA的“全部”选项后,我可以安全地更改州选择:

如果选择了county和MSA的“All”选项之外的其他选项,则在仪表板未崩溃的情况下,我无法更改状态选择:


来自SQL的数据是一个两列数组,带有一个MDX格式的值和一个明文标签,带有一个All值来指定MDX父级“All”值。

如果您没有给出太多的上下文,我无法给您一个非常具体的答案,因此我希望您从中得到足够的信息:

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

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

});

解决了。很多代码都是Pentaho CDE特有的,这是因为我没有尝试直接更改选择器的值,而是为参数设置了一个侦听器,该参数将选择器值存储在选择器本身中,并对其进行了更改

将下面的代码作为JS资源放在Pentaho CDE中,然后在@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);
    });

})

我认为这个问题不太广泛。我特别想问一件事:如果在另一个选择框中发生变化时有一定的条件,如何动态地重新分配多个选择框的值。这几乎是纯JQuery,所有Pentaho和SQL内容都只是上下文。我认为您可以删除问题的大部分上下文,就像SQL查询一样,它与您所问的JQuery相关问题并不相关。除此之外,您应该显示当前的jQuery源代码,就像这样,我们看不出您做错了什么。@rednaw,这就是问题所在,页面是由Pentaho BI工具生成的,但它允许通过在执行前后以及更改前后插入您自己的jQuery或js语句进行自定义。谢谢,虽然不是我真正想要的,但它确实让我朝着正确的方向看。