jquery窗体onchange选择值变化

问题描述:

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

第一个问题是,当我进行更改事件时,我想隐藏默认显示的元素准备文档,它仍然可见(我不得不改变颜色不同于打开下拉菜单,它不会是可见的然后)。

其次,我正在寻找最灵活的解决方案,因为我对我有疑虑。这里的代码:

 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); 
        } 
      }); 
     }); 
+0

,你会介意分享一些你的代码? – codef0rmer 2012-03-28 08:21:55

+0

刚刚完成,我还在考虑如何使我的选择器中的变量变得更短,以使它更短 – Malyo 2012-03-28 08:30:51

+0

@Malyo,请仅发布相关代码,而不是所有内容 – Starx 2012-03-28 08:35:55

我回答了我理解的唯一部分。

而不是使用多个if语句可以使用开关

switch(selectsize) { 
    case rozmiar[1]: 
     $('select.form2 option[value='+color[2]+']').hide(); 
     break; 
    //case <another>" 
     //break; 
} 
+0

我正在考虑它,但切换真的更快? – Malyo 2012-03-28 08:42:03

+1

@Malyo,请参考[this](http://*.com/a/2923007/295264)。 ;) – Starx 2012-03-28 08:43:39

+0

我还可以在开关内使用比较吗?像案例(wybranyRozmiar == rozmiar [0]) - 因为它对我的代码至关重要 – Malyo 2012-03-28 08:53:12

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

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

D3m0:http://jsbin.com/azilow