2014-09-09 17 views
6

Ho una selezione multipla sulla mia pagina e ho un'opzione disabilitata in modo che l'utente non possa deselezionarli, ma non riesco a capire come ottenere il valore di l'opzione disabilitata.Ottieni valore dell'opzione disabilitata in Seleziona più jquery

Il mio codice finora

// Get selected positions 
var $selPositions = $('select#empPositions').val(); 

HTML

<select name="empPositions[]" id="empPositions" style="width: 370px;" multiple="" data-placeholder="Choose a Position" required=""> 
<option></option> 
<optgroup label="Admin"> 
    <option disabled="">There are no positions assigned to Admin</option> 
</optgroup> 
<optgroup label="Information Technology"> 
    <option value="1" selected="" disabled="">IT Developer</option> 
    <option value="2">IT Geeks</option> 
</optgroup> 

Nota L'opzione disabili modifiche sulla base di altre variabili, ma mi dà solo i valori non disabili selezionati. Qualcuno può farmi sapere se questo può essere fatto e come?

sto usando Chosen, quindi, perché l'opzione di disabled

Fiddle:http://jsfiddle.net/c5kn5w75/

ho trovato this article sul Bug Sito JQuery che ha detto

La logica di lunga data in .val() garantisce che non vengano restituite opzioni disabilitate in un select-multiplo. La modifica applica lo stesso comportamento per select-one ora per coerenza. Puoi ottenere il valore dell'opzione disabilitata tramite $ ("seleziona"). Prop ("selectedIndex") se ne hai bisogno.

Ma questo non ha funzionato per me.

+0

sarebbe d'aiuto se hai postato il codice HTML troppo –

+0

Non vedo un problema .. vedi questo jsfiddle che è la mia interpretazione del problema: http://jsfiddle.net/t60w5ztx/ –

+0

@Skram è una selezione "multipla", ecco qual è il problema. Funziona se è standard – dpDesignz

risposta

8

DEMO

var opt = $('#empPositions option:selected').map(function(i,v) { 
    return this.value; 
}).get(); // result is array 
alert(opt); 

Si prega di tenere a mente che, quando si invia il modulo Opzioni disattivato wont essere presentate anche se sono selezionati. Se stai inviando tramite AJAX, puoi prendere i valori come mostrato sopra.

Ricordare inoltre che $('option[disabled]').val() restituirà il valore del primo elemento disattivato option e $('option[disabled]:selected').val() il valore della prima opzione disabilitata selezionata.

Se c'è sempre un solo elemento selected disabled opzione è possibile target utilizzando:

var opt = $('#empPositions option[disabled]:selected').val(); // result is string 
+0

Grazie! Ho un input nascosto per gestire quell'elemento :) – dpDesignz

+0

Cool :) Felice di poterti aiutare. – PeterKA

0

È possibile ottenere il valore di un elemento disabile facendo qualcosa di simile a questo:

$('option[disabled]').val(); 
+0

Nope ha provato quello e 'opzione: disabilitato' ed entrambi restituiscono undefined. :/ – dpDesignz

+0

Sembra che ci sia un errore di sintassi qui? – bencripps

+0

@bencripps In che modo? – dpDesignz

Problemi correlati