Jquery表单onchange选择值更改

Jquery表单onchange选择值更改,jquery,forms,select,option,onchange,Jquery,Forms,Select,Option,Onchange,我正在寻找这个问题的最佳解决方案。我有一个简单的商店逻辑问题。有两个选择元素,大小和颜色。我想让它们依赖于数据(现在是示例数据,但稍后将来自数据库)——大小将决定哪些颜色选项对客户可见(隐藏不必要的颜色选项) 第一个问题是,当我设置change事件时,我想在document ready上隐藏默认显示的元素,它仍然可见(我必须再次将颜色更改为与open下拉列表不同的颜色,然后它将不可见) 第二,我正在寻找最灵活的解决方案,因为我对自己的方案有疑问。代码如下: var rozmiar

我正在寻找这个问题的最佳解决方案。我有一个简单的商店逻辑问题。有两个选择元素,大小颜色。我想让它们依赖于数据(现在是示例数据,但稍后将来自数据库)——大小将决定哪些颜色选项对客户可见(隐藏不必要的颜色选项)

第一个问题是,当我设置change事件时,我想在document ready上隐藏默认显示的元素,它仍然可见(我必须再次将颜色更改为与open下拉列表不同的颜色,然后它将不可见)

第二,我正在寻找最灵活的解决方案,因为我对自己的方案有疑问。代码如下:

       var rozmiar = new Array("S", "M", "L", "XL", "XXL");
   var kolor = new Array("Czerwony", "Niebieski", "Zielony", "Biały", "Czarny");
   var opcje = new Array( rozmiar, kolor);

        $(document).ready(function(){
        $('.form1').change(function(){
                $('.form2 option').show();

                var selectSelector = function(z){
                    selectSelector = $('select.form2 option[value='+kolor[z]+']').hide();
                };

                wybranyRozmiar = $(this).val();
                    if(wybranyRozmiar == rozmiar[0]){
                        selectSelector(0);
                    }
                    if(wybranyRozmiar == rozmiar[1]){
                        selectSelector(1);
                    }
                    if(wybranyRozmiar == rozmiar[2]){
                        selectSelector(2);
                    }
                    if(wybranyRozmiar == rozmiar[3]){
                        selectSelector(3);
                    }
                    if(wybranyRozmiar == rozmiar[4]){
                        selectSelector(4);
                    }
            });
        });

我只回答了我能理解的部分

您可以使用switch来代替使用多个
if
语句

switch(selectsize) {
   case rozmiar[1]:
       $('select.form2 option[value='+color[2]+']').hide();
       break;
   //case <another>"
       //break;
}
开关(选择大小){
案例rozmiar[1]:
$('select.form2 option[value='+color[2]+']')。hide();
打破
//案例”
//中断;
}

这是我理解的需要做的事情。根据
.form1
中所选选项的索引,从
.form2
中选择相应的选项

$('select.form1').change(function (i) {
  var selectedIndex = $('select.form1 option:selected').index();
  $('select.form2 option:eq(' + selectedIndex + ')').attr('selected', 'selected');
});

D3m0:

你介意分享你的一些代码吗?刚刚完成,我还在考虑如何从我的选择选择器中生成变量,使其shorter@Malyo,请仅发布问题的相关代码,而不是everything@Malyo,我想你需要把你的问题分解成不同的问题。好的,我会尽量简化我的问题我在想,但开关真的更快吗?@Malyo,请参考。;)我可以在开关内部使用比较吗?比如case(wybranyRozmiar==rozmiar[0]),因为它对我的工作至关重要code@Malyo,我不建议这样做,因为在语义上它是错误的。开关用于处理一个表达式上有多个版本的情况。