2010-04-21 119 views
1

我有我的webform上的2下拉列表,並使用jquery試圖根據第一下拉選擇篩選/重置篩選器第二下拉元素。jquery重置條件篩選器

$(document).ready(function() 
{ 
     $('#dropdown1').change(function(e) 
     { 
      switch ($(this).val()) 
      { 
       case "4": 
       //this removal works 
       $('#dropdown2').filter(function() 
        { 
         return ($(this).val() == 16); 

        }).remove(); 
        break; 


       .................  
       default: 
       //how would I restore filter here? 

      } 

     } 

}); 

卸下部分工作,所以沒有問題篩選項目,但我很難恢復上下拉2中的濾波器,如果別的東西在下拉列表1.選擇我試圖用.hide().show()代替.remove()但至少在IE6上似乎不起作用。

+0

您可以在頁面加載時將原始值讀入數組中嗎?然後重新設置所有的值? – 2010-04-21 22:22:19

+0

只需讀取下拉列表中的所有值到Array中? – Victor 2010-04-21 22:31:58

+0

您能否以一般條款顯示您將如何操作? – Victor 2010-04-21 23:24:07

回答

1

在文檔的準備取中值的dropdown2副本這樣開始:每當你想在dropdown2值恢復到初始狀態

var drp2values = $('#dropdown2').html(); 

然後做到這一點:

$('#dropdown2').html(drp2values); 

在var實際值將是這樣的:

<option value="11">11</option> 
<option value="12">12</option> 
<option value="13">13</option> 
<option value="16">16</option> 

只是試圖它:

此代碼:

$(document).ready(function() 
{ 
var drp2values = $('#dropdown2').html(); 

     $('#dropdown1').change(function(e) 
     { 
      switch ($(this).val()) 
      { 
       case "4": 
       //this removal works... now ;) 
       $('#dropdown2').find('option').filter(function() 
        { 
        alert('in4 filt' + drp2values + $(this).val()); 
         return ($(this).val() == 16); 

        }).remove(); 
        break; 
       default: 
       //how would I restore filter here? 
       $('#dropdown2').html(drp2values); 
      } 

     }); 

}); 

有了這個HTML

<BODY> 
    <select id='dropdown1'> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
    </select> 

    <select id='dropdown2'> 
     <option value="11">11</option> 
     <option value="12">12</option> 
     <option value="13">13</option> 
     <option value="16">16</option> 
    </select> 
</BODY> 

你張貼在你說的刪除工作,它沒有刪除個人選項和值16的原代碼,它刪除了整個下拉菜單,因爲您在過濾之前沒有爲選項添加選項,您正在刪除下拉列表:)

希望這有助於您。

+0

+1不錯,簡單簡潔的代碼解釋...歡迎來到SO! – 2010-04-22 00:52:35

+0

感謝您的回覆。這只是我的錯字,我不會正常刪除下拉列表:-) – Victor 2010-04-22 02:40:43