2015-07-02 2 views
4

Я пытаюсь выборочно скрыть параметры в раскрывающемся списке, используя атрибут 'hidden'. Пожалуйста, взгляните на jsfiddle, в котором я скрываю «самый тихий» вариант.Скрытие опции в раскрывающемся списке

$('#quietest').prop('hidden', 'hidden'); 

При нажатии стрелки в списке выпадающего «бесшумная» опция успешно скрытом (только «быстрый» и «сбалансированный» перечислены), однако, пользователь все еще может выбрать «бесшумный» вариант с использования клавиатура. Это ожидаемое поведение для «скрытого» атрибута? Как правильно скрыть, чтобы его больше не выбирали? Необходимо также легко отобразить эту опцию (поэтому предпочтительно не удалять опцию).

+0

Вы хотите использовать '.show() /. Скрыть()' или '.toggle()'. Тем не менее, есть проблемы со скрытыми параметрами в некоторых браузерах. Вам будет лучше отключить или отключить эту опцию, используя '.prop ('disabled', true | false)' – billyonecan

+0

Решение @chiapa будет работать для вас, если вы хотите, чтобы этот вариант не был выбран, а скорее скрывался. Но все же отключенный параметр будет показан в раскрывающемся списке. Если вы хотите приобрести оба варианта, попробуйте удалить эту опцию, когда захотите и добавите ее, когда вам нужно ее показать. – Yasitha

ответ

3

Вы можете попробовать так:

Fiddle - hiding with hidden property

$('#quietest').prop('disabled', true).prop('hidden', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="dptcentres_edit"> 
 
    <option value="fastest">Fastest</option> 
 
    <option selected="true" value="balanced">Balanced</option> 
 
    <option id='quietest' value="quietest">Quietest</option> 
 
</select>

EDIT

Благодаря @ billyonecan свой комментарий, я заменил метод сокрытия, вместо того, чтобы использовать hidden свойство, я использую CSS display атрибут и установить его ни для того, чтобы скрыть элемент , Как он правильно заявляет, hidden свойство isn't supported by all browsers.

Fiddle - Hiding with CSS display attribute

$('#quietest').prop('disabled', true).css('display', 'none');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="dptcentres_edit"> 
 
    <option value="fastest">Fastest</option> 
 
    <option selected="true" value="balanced">Balanced</option> 
 
    <option id='quietest' value="quietest">Quietest</option> 
 
</select>

+0

Вам будет лучше использовать '.hide()', атрибут 'hidden' [не поддерживается всеми браузерами] (http://caniuse.com/#search=hidden) – billyonecan

+0

Спасибо @billyonecan, I обновил мой ответ – chiapa

+0

Помните, что вы все еще можете ввести на клавиатуре и выбрать скрытые значения. См. Ответ Раджи. – Mir

0

Использование hide. Скрывая option, его нельзя выбрать.

$('#quietest').hide().prop('disable', true); 

DEMO

+0

У этой проблемы все еще есть проблема. Вы можете выбрать самую тихую клавишу со стрелкой. – Yasitha

3

Чтобы перестать быть выбран, добавьте disabled а

$('#quietest').prop('disabled', true).hide(); 
Смежные вопросы