Deaktivieren Sie die von jquery ausgewählte Dropdown-Liste


86

Ich habe ein ausgewähltes Div, das ich mit dem ausgewählten JQuery-Plugin verwende , um Funktionen zu formatieren und hinzuzufügen (insbesondere Suche). Der Div sieht ungefähr so ​​aus,

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

Und ich benutze das gewählte Plugin so,

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

Während einige AJAX geladen werden, möchte ich die gesamte <select>Div deaktivieren . Vielleicht mit so etwas,

 $('#foobar').disable()

oder dieses

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

Ich denke du kommst auf die Idee.

Irgendwelche Ideen, wie das geht? Ich habe eine Reihe verschiedener Dinge ausprobiert, z. B. die Verwendung von jquery-Redewendungen zum Deaktivieren von Dingen, das Deaktivieren der, <select>die nur die zugrunde liegende Auswahl deaktiviert, nicht die ausgewählten Dinge darüber. Ich habe sogar manuell ein weiteres Div mit einem High hinzugefügt z-index, um die Box nur grau zu machen, aber ich denke, dass dies wahrscheinlich hässlich und fehlerhaft ist.

Danke für die Hilfe!

Antworten:


147

Sie deaktivieren nur Ihr select, aber ausgewähltes rendert es als Divs, Spans usw. Nachdem Sie Ihr Select deaktiviert haben, müssen Sie das Plugin aktualisieren, damit das Select-Widget ebenfalls deaktiviert wird. Sie können dies folgendermaßen versuchen:

$('#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");

Ich habe die Informationen hier gefunden

Geige

Sobald Sie das Widget aktualisiert haben, wird lediglich der Klick oder andere Ereignisse im Plugin aufgehoben und die Deckkraft auf 0,5 geändert. Da es für einen Div keinen wirklich deaktivierten Zustand gibt.


Sieht so aus, als ob ein Tippfehler vorliegt. Sollte liszt:updatedes nicht `list: aktualisiert sein?
Lanoxx

1
lisztwar richtig, aber jetzt chosen:updatedist der richtige Weg, es trotzdem zu tun.
Kaleb Anderson

Vorschlag: Möglicherweise müssen Sie in Ihrer Antwort zuerst die neueste Version des Codes angeben, da viele Benutzer die neueste Version verwenden. Ich habe verwendet liszt:updatedund nicht funktioniert, da es in neuen Versionen nicht funktioniert.
Glücklicher

.trigger("chosen:updated");Es dient auch zum Aktivieren oder Deaktivieren, beispielsweise wenn Sie es in einer Funktion erneut aufrufen.
Arenas V.

$ ('# foobar option: not (: selected)'). prop ('disabled', true) .trigger ("ausgewählt: aktualisiert"); deaktiviert die anderen Elemente in der Dropbox mit Ausnahme des ausgewählten Elements.
Asad Naeem

51

In der letzten Version von gewählt, liszt:updatedfunktioniert nicht mehr. Sie müssen verwenden chosen:updated:

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

Hier ist eine JSFiddle .


7

PSL war korrekt, aber ausgewählt wurde seitdem aktualisiert.

Fügen Sie dies nach dem Deaktivieren ein:

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

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

Das funktioniert perfekt !!!! @chosen v1.3.0


1

Sie können dies versuchen:

$("#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();
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.