2015-06-03 11 views
6

Szukam tylko menu rozwijanego chosen tylko do odczytu, i trzeba to zrobić dynamicznie za pomocą selektora jQuery. Jeśli ustawię go wyłączony za pomocą:Tworzenie listy rozwijanej Tylko do odczytu (nie wyłączone)

$("#dropdownDepartment").attr("disabled","disabled").trigger('chosen:updated'); 

wartość nie jest POSTed, ale potrzebuję go.

Próbowałem

$("#dropdownDepartment").attr('readonly',true).trigger('chosen:updated'); 

ale to nie działa.

Używam Chosen v1.4.2 i jQuery v2.1.4.

Pomoc doceniona! Dziękuję Ci.

+0

masz na myśli "wyłączyć" to? Chodzi mi o to, że nie chcesz, aby użytkownik go kliknął? –

+0

jeśli chcesz wyłączyć możesz spróbować tego: - http://jsfiddle.net/ymou0ffx/1/ –

+3

Nie chcę tego wyłączać. Chcę, aby było to tylko do odczytu. – Robin

Odpowiedz

4

Istnieje kilka opcji, które można wykonać.

  • Wyłącz listę rozwijaną i zapisz wartość w ukrytym polu i wyślij ją w POST.
  • wyłączyć wszystkie pozostałe pozycje więc tylko jeden wybrany jest włączona

    $('#dropdownDepartment option:not(:selected)').attr('disabled', true); 
    
  • Wyłącz spadek w dół i zanim zrobisz post włączyć
  • Kiedy chcesz wyłączyć go przekształcić go tylko do odczytu tekstowe
5

spróbuj tego: -

var select = $('select'); 
var oldVal=$('select').val(); 
select.chosen().on('change',function(e){ 
    select.val(oldVal); 
    select.trigger("chosen:updated"); 
}); 

Demo

2

Mam obejście na tym samym. Miejmy nadzieję, że pomoże to komuś w przyszłości (chyba już to zrobiłeś).

Najpierw wydrukuj wybraną wartość opcji wybranego wyboru na ukryte wejście, takie jak poniższe. Dla $_POST wartości uzyskać wartość z tego ukrytego wejścia $_POST['myselect']:

<input type="hidden" name="myselect" value="selected_option_value_goes_here" /> 

Następnie wyłączyć wybrany wybierz. Ale bezpieczne jest ustawienie ukrytej wartości wejściowej na bieżącą przed wyłączeniem:

$('input[name=myselect]').val($(".chosen-select").val()); 
$('.chosen-select').attr("disabled", true).trigger("chosen:updated"); 

N.B. Jeśli nie chcesz go wyłączyć, po prostu nie musisz aktualizować wartości ukrytego wejścia w zdarzeniu zmiany wybranego wyboru.

A working demo can be found by clicking here.

0

mogę spóźnić się do partii, ale natknąłem się na tym samym numerze jak OP. Rozwiązaniem, które znalazłem, aby przywrócić wartości, nawet jeśli są wyłączone, jest ponowne włączenie ich po przesłaniu formularza.

$("form").bind("submit", function() { 
    $("#TheList *").prop("disabled", false).trigger("chosen:updated"); 
}); 

Zauważ, że [spacja] [gwiazda] po TheList, to ponowne rekursywne włączenie każdego dziecka na liście.

0

Najlepsze rozwiązanie dla mnie było tak brzydką sztuczką $("#dropdownDepartment").prop('disabled',true).trigger('chosen:updated').prop('disabled',false). Tak wybrana jest wyłączona, ale wartość z select jest POSTed.