вимкнути вибраний jquery випадаючий список


88

У мене є вибір div, за допомогою якого я використовую вибраний плагін jquery для стилізації та додавання функцій (найголовніше, пошуку). Div виглядає приблизно так,

 <select data-placeholder="add a foobar" id="foobar" style="width: 350px;">
 <option value=""></option>
 </select>

І я використовую вибраний плагін ось так,

 $('#foobar').chosen();

Поки завантажується деякий AJAX, я хотів би відключити весь <select>div. Можливо, з чимось подібним,

 $('#foobar').disable()

або це

 $('#foobar').prop('disabled', true)

Я думаю, ви зрозуміли ідею.

Будь-які ідеї щодо того, як це зробити? Я спробував декілька різних речей, наприклад, використовуючи ідіоми jquery для відключення речей, відключення того, <select>що просто відключає основний вибір, а не вибраний матеріал поверх нього. Я навіть вдався до того, щоб вручну додати ще один div з високим, z-indexщоб просто сірий, але я думаю, що це, швидше за все, буде потворним і глючним.

Дякую за допомогу!

Відповіді:


150

Ви відключаєте лише свій select, але вибраний робить його як div, так і охоплює і т. Д. Тож після відключення вашого select вам потрібно оновити плагін, щоб зробити віджет відбору теж відключеним. Ви можете спробувати таким чином:

$('#foobar').prop('disabled', true).trigger("liszt:updated");

//For non-older versions of chosen you would want to do:

$('#foobar').prop('disabled', true).trigger("chosen:updated");

Я знайшов інформацію тут

Скрипка

Після оновлення віджету все, що він робить, - це відв’язує клацання та інші події на плагіні та змінює свою непрозорість на 0,5. Оскільки для div немає реального відключеного стану.


Схоже, є помилка liszt:updated, чи не повинен це бути `list: updated?
lanoxx

1
lisztбуло правильно, але зараз chosen:updatedце правильний спосіб зробити це в будь-якому випадку.
Калеб Андерсон

Пропозиція: Можливо, вам доведеться вказати останню версію коду спочатку у вашій відповіді, оскільки багато користувачів будуть використовувати останню версію. Я використовував liszt:updatedі не працював, оскільки він не працює в нових версіях.
Пощастило

.trigger("chosen:updated");Він також служить для активації або деактивації, наприклад, якщо ви знову викликаєте його у функції.
Аренас В.

$ ('# foobar option: not (: selected)'). prop ('disabled', true) .trigger ("вибрано: оновлено"); вимкне інші елементи в списку, крім вибраного.
Асад Наєм

51

В останній версії з вибраних, liszt:updatedвона вже не працює. Вам потрібно використовувати chosen:updated:

$(".chosen-select").attr('disabled', true).trigger("chosen:updated")

Ось JSFiddle .


7

PSL був правильним, але вибраний з тих пір оновлений.

Поставте це після відключення:

$("#your-select").trigger("chosen:updated");


1

Ви можете спробувати це:

$("#foobar").prop('disabled',true).trigger("chosen:updated").chosen('destroy').chosen()


0
$(document).ready(function () {
    $("#foobar").chosen().on('chosen:showing_dropdown',function() {
            $('.chosen-select').attr('disabled', true).trigger('chosen:updated');
            $('.chosen-select').attr('disabled', false).trigger('chosen:updated');
            $('.search-choice-close').hide();
    });
    $('.search-choice-close').hide();
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.