Скрыть параметры в элементе select, не работающем в IE? [дубликат]
Возможные Дубликаты:
скрыть опцию выбора в IE с помощью jQuery
Итак, как вы можете видеть ниже, у меня есть два выбора элементов. Первый имеет два значения, 1.4 и 1.7. В зависимости от того, какой параметр выбран, я хочу отключить определенные параметры во втором элементе select. Он отлично работает в chrome, но IE является сукой (как обычно!).
есть идеи, что случилось?
<p>
<label style="width: 155px; display: inline-block;">Height</label>
<select name="height">
<option value="1.4">1.4</option>
<option value="1.7">1.7</option>
</select>
</p>
<p>
<label style="width: 155px; display: inline-block;">Amount</label>
<select name="slanor">
<option class="four" value="2">2</option>
<option class="four seven" value="3">3</option>
<option class="seven" value="4">4</option>
</select>
</p>
<script>
$(document).ready(function() {
check();
$('select[name=height]').change(function() {
check();
});
function check() {
var slanor = $('select[name=slanor]');
var currHeight = $('select[name=height]').val();
if(currHeight == '1.4') {
slanor.find('option').hide();
slanor.find('.four').show();
} else {
slanor.find('option').hide();
slanor.find('.seven').show();
}
}
});
</script>
3 ответов
понятие скрытые options
на select
не существует в IE. Вам придется вручную удалить и повторно добавить записи, что может быть несколько неудобно.
другим решением было бы также отключить элементы:
slanor.find(option).hide().prop('disabled', true);
это скроет опцию во всех браузерах, которые ее поддерживают, но отключит ее в IE, что означает, что она все равно будет видна, но визуально отличается от других опций, и невыбираемыми.
: если ваша проблема точно так, как вы описали, и есть только два варианта, что ваш скрипт будет отличаться, самым простым решением может быть hide
и show
два разных выпадающих списка полностью, в зависимости от того, какой параметр выбран.
призвание .hide () в jQuery добавляет display: none к элементу. Я сомневаюсь, что это стандартный HTML, который вы можете скрыть таким образом.
вы можете использовать этот код вместо:
slanor.empty();
if (currHeight == '1.4') {
slanor.append($('<option'>).val('2').text('2'));
slanor.append($('<option'>).val('3').text('3'));
}
else {
slanor.append($('<option'>).val('3').text('3'));
slanor.append($('<option'>).val('4').text('4'));
}
тег option не поддерживает атрибут отображения css. Что и делает show () / hide (). Лучше всего удалить и воссоздать параметры по мере их необходимости. Или, я думаю, вы можете добавить их к другому скрытому объекту и вытащить их обратно, когда вам нужно, чтобы они полностью сформировались.
таким образом, у вас будет что-то вроде
$("option").appendTo($("#myhiddenselect"));
$(".four").appendTo($("#myvisibleselect"));