Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Javascript 根据所选过滤器更改可用的选择框选项[Jquery]_Javascript_Jquery - Fatal编程技术网

Javascript 根据所选过滤器更改可用的选择框选项[Jquery]

Javascript 根据所选过滤器更改可用的选择框选项[Jquery],javascript,jquery,Javascript,Jquery,我知道这不是最好的解决方案,通过SQL语句动态加载布道会更好,但我有一个布道页面 我有一个过滤部分,可以让你过滤书刊、牧师和年份的布道 目前所有的布道都在页面加载中加载。然后根据通过下面的Jquery脚本选择的过滤器隐藏一些布道 这可以完美地隐藏任何不打算为所选过滤器显示的布道 问题是我想隐藏不在所选过滤器选项之外的可用选择选项 例如:布道者艾尔·伯克没有在詹姆斯系列中布道,因此当我将系列过滤器更改为詹姆斯时,他的名字也应该消失,作为布道者选择框中的可选选项。否则,选择詹姆斯系列和艾尔伯克布道者

我知道这不是最好的解决方案,通过SQL语句动态加载布道会更好,但我有一个布道页面

我有一个过滤部分,可以让你过滤书刊、牧师和年份的布道

目前所有的布道都在页面加载中加载。然后根据通过下面的Jquery脚本选择的过滤器隐藏一些布道

这可以完美地隐藏任何不打算为所选过滤器显示的布道

问题是我想隐藏不在所选过滤器选项之外的可用选择选项

例如:布道者艾尔·伯克没有在詹姆斯系列中布道,因此当我将系列过滤器更改为詹姆斯时,他的名字也应该消失,作为布道者选择框中的可选选项。否则,选择詹姆斯系列和艾尔伯克布道者将不会显示布道,因为他没有在该系列中布道

$function{ $series,传教士.changefunction{ var series=$series.val;//series用户已选择。 var broaster=$broaster.val;//布道者用户已选择。 $.wrapper.hide; 如果系列==全部{ 如果传道者=所有{ $.wrapper.show;//显示所有布道 }否则{//Series==全部和传教士!=全部 $.wrapper.eachfunction{ 如果$this.hassclassbroader{ $this.show;//显示选定牧师的布道 } }; } }else{//Series!=全部 如果传道者=所有{ $.wrapper.eachfunction{ 如果$this.hasClassseries{ $this.show;//显示所选系列的布道 } }; }否则{ $.wrapper.eachfunction{ 如果$this.hasglasseries&&$this.hasglasseries{ $this.show;//显示所选系列和牧师的布道。 } }; } } }; }; class=包装器james peter\u gimbert class=包装器james adrian_armstrong 类=包装加拉太书al_burke class=包装器加拉太书adrian_armstrong 类=包装加拉太书al_burke 类=包装加拉太人彼得·金伯特 类=包装加拉太书al_burke 类=包装器1_samuel al_burke 类=包装器1_samuel al_burke class=1\u samuel adrian\u armstrong 类=包装器1_samuel al_burke 类=包装器1_samuel al_burke class=1\u samuel adrian\u armstrong 类=包装器1_samuel al_burke class=包装器philippians adrian_armstrong 类=包装器1_samuel al_burke 类=包装诗篇al_burke 类=包装诗篇al_burke 所有的书 詹姆斯 加拉太人 菲利浦人 1塞缪尔 所有传教士 阿尔伯克 彼得·金伯特 阿德里安·阿姆斯特朗
感谢分享完整的代码

我看到选择框的值与包装器直接相关

试试下面的代码

    var r = "";
    var v ="";
    $(document).ready(function(){

        $("#series").change(function(){
            v = $(this).val(); 
            r = /(v)/;
            if(v == "all"){
                $("#preacher").children().show();
                return;
            }
            $("#preacher option").hide();
//This line removed

            $(".wrapper").each(function(k1,v1){
                if($(v1).attr("class").search(" "+v+" ")<0){
                    $(v1).hide();
                }else{
                    $(v1).show();
                    $("#preacher").children("option[value^=" + $(v1).attr("class").split(" ")[2] + "]").show()
                }
            });
             $("#preacher").children("option[value^=all]").show(); // Line Added
        });

    });

我希望这将解决您在下拉列表中显示和隐藏值的问题

共享您的html并提供一个工作代码段请共享您的完整代码,而不是Images@AlpeshJikadra很抱歉,现在提供了完整的代码。。希望这更有意义。谢谢阿尔皮什!很好!然而,我注意到的一个问题是,当您选择一个系列或一个传教士时,“所有传教士”或“所有系列”选项将消失。无论选择了什么选项,都有办法始终显示这一点吗?@masterg174,我对上述代码进行了更改,请尝试新代码!非常感谢!工作得很好。对不起,还有一件事。对传教士来说,也有可能反过来做吗。例如,如果我首先从“传教士”下拉列表中选择“艾尔·伯克”,它是否可以从该系列中删除“詹姆斯”选项,因为其中没有包含詹姆斯和艾尔·伯克的包装器类。如果很难做到这一点,那没什么大不了的。我可以看到,目前,如果艾尔·伯克先被选上,然后是詹姆斯,那么所有的传教士都会被选上。事实上,当你改变系列的时候,结果已经发生了变化,这一切都很好。看起来很好用。谢谢你的帮助!