2017-07-18 3 views
2

Ich habe 2 Auswahllisten, die Auswahl einer Option aus dem ersten bestimmt die verfügbaren Optionen in der zweiten. Dies funktioniert in Chrome sehr gut, aber IE hat Probleme beim Ausblenden der entsprechenden Optionen bei Änderung der ersten Auswahl. Die Klasse hidden wird angewendet, die Optionen sind jedoch weiterhin sichtbar. Irgendeine Idee, wie man das ändert, um im IE zu arbeiten?Ausblenden von Optionen in IE mit jQuery

Fiddle

$(document).on('change', '#category', function(e) { 
 
    if ($(this).prop('selectedIndex') == 0) { 
 
    $('#condition option').addClass('hidden'); 
 
    $('#condition .cat-1').removeClass('hidden'); 
 
    } else if ($(this).prop('selectedIndex') == 1) { 
 
    $('#condition option').addClass('hidden'); 
 
    $('#condition .cat-2').removeClass('hidden'); 
 
    } 
 
});
.hidden { 
 
    display: none !important; 
 
} 
 

 
#category { 
 
    height: 40px; 
 
} 
 

 
#condition { 
 
    height: 110px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select id="category" size="2"> 
 
    <option class="cat-1">Group 1</option> 
 
    <option class="cat-2">Group 2</option> 
 
</select> 
 

 
<select id="condition" size="2"> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
</select>

+0

Mögliche Duplikat [

+0

Wahrscheinlich funktioniert auch nicht in Firefox. Ausblenden von Optionen ist nicht Cross-Browser, Sie müssen sie entfernen oder deaktivieren – adeneo

Antwort

1

Sie können selectoption s Variable speichern, dann entfernen und readd jeder von ihnen gewünscht wird.

// saving options 
 
var options = $("#condition option"); 
 

 
$(document).on('change', '#category', function(e) { 
 
    if ($(this).prop('selectedIndex') == 0) { 
 
    // deleteing all options 
 
    $("#condition").empty(); 
 
    // adding options only of class .cat-1 
 
    options.filter(".cat-1").each(function() { 
 
     $("#condition").append($(this)); 
 
    }); 
 
    } else if ($(this).prop('selectedIndex') == 1) { 
 
    // deleteing all options 
 
    $("#condition").empty(); 
 
    // adding options only of class .cat-2 
 
    options.filter(".cat-2").each(function() { 
 
     $("#condition").append($(this)); 
 
    }); 
 
    } 
 
});
#category { 
 
    height: 40px; 
 
} 
 

 
#condition { 
 
    height: 110px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select id="category" size="2"> 
 
    <option class="cat-1">Group 1</option> 
 
    <option class="cat-2">Group 2</option> 
 
</select> 
 

 
<select id="condition" size="2"> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
</select>

+0

Vielen Dank! Ich habe Schwierigkeiten, mein Change Event zu bekommen, was 'options' bedeutet, einen undefinierten Fehler, wenn es die Filterzeilen trifft. – noclist

+1

@noclist Sie sollten die Optionen beim Laden der Seite speichern (nicht beim Change Event) und dann filtern. Macht es Sinn oder hast du immer noch Probleme damit? –

+0

hab es geschafft, danke. Meine Variable wurde falsch zugeordnet. – noclist

Verwandte Themen