2010-04-21 3 views
1

У меня есть два раскрывающихся списка на моей веб-форме и с помощью jquery, пытающихся фильтровать/сбросить фильтр. 2-й выпадающий элемент, основанный на первом выпадающем списке.jquery reset условный фильтр

$(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

Можете ли вы прочитать исходные значения в массиве при загрузке страницы? А потом просто сбросьте все значения? –

+0

Просто прочитайте все значения из выпадающего списка 2 в массив? – Victor

+0

Не могли бы вы показать в общих чертах, как вы это сделаете? – Victor

ответ

1

В начале документа готовы взять копию значений в dropdown2 так:

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

тогда, когда вы хотите, чтобы сбросить значения в dropdown2 в исходное состояние это сделать:

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

фактическое значение в вар будет что-то вроде:

<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! –

+0

Спасибо за ответ. Это была только моя опечатка, я обычно не удаляю выпадающее меню :-) – Victor

Смежные вопросы