2015-06-03 8 views
6

Sto cercando di creare un menu a discesa chosen, e devo farlo dinamicamente utilizzando un selettore jQuery. Se l'ho disabilitato usando:Creazione dell'elenco a discesa scelto Solo lettura (non disattivato)

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

il valore non viene POSTATO ma ho bisogno che sia.

ho cercato

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

, ma questo non funziona.

Sto usando Chosen v1.4.2 e jQuery v2.1.4.

Guida apprezzata! Grazie.

+0

vuoi dire "disabilita"? Intendevo che non vuoi che l'utente faccia clic su di esso? –

+0

se vuoi disabilitare puoi provare questo: - http://jsfiddle.net/ymou0ffx/1/ –

+3

Non voglio disabilitarlo. Voglio farlo solo leggere. – Robin

risposta

4

Ci sono alcune opzioni che potresti fare.

  • Disabilitare il menu a discesa e memorizzare il valore in un campo nascosto e inviarlo in un POST.
  • Disattiva tutte le altre selezioni in modo che solo quello selezionato è abilitato

    $('#dropdownDepartment option:not(:selected)').attr('disabled', true); 
    
  • Disabilitare menu a tendina e prima di fare un post gli permettono
  • Quando si desidera disabilitarlo trasformarlo in un sola lettura textbox
5

provare questo: -

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

Demo

2

Ho una soluzione allo stesso. Quindi spero che possa aiutare qualcuno in futuro (credo che tu abbia già fatto la soluzione).

Prima stampare il valore dell'opzione selezionata della selezione scelta in un ingresso nascosto come il seguente. Per $_POST valore di ottenere il valore da questo input nascosto $_POST['myselect']:

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

quindi disattivare l'select prescelto. Ma è sicuro di impostare il valore di ingresso nascosto a quello corrente prima di disattivarlo:

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

N.B. Se non si desidera disattivarlo, non è necessario aggiornare il valore dell'ingresso nascosto sull'evento di modifica della selezione selezionata.

A working demo can be found by clicking here.

0

io possa essere in ritardo alla festa, ma mi sono imbattuto lo stesso problema di OP. La soluzione che ho trovato per postback dei valori, anche se sono disabilitati, è riattivarli quando viene inviato il modulo.

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

Avviso di [spazio] [stella] dopo thelist, è a ricorsivamente riattivare ogni bambino nella lista.

0

La soluzione migliore per me era un trucco così brutto $("#dropdownDepartment").prop('disabled',true).trigger('chosen:updated').prop('disabled',false). Così scelto è disabilitato ma il valore da select viene POSTATO.