Un'altra possibilità potrebbe essere quella di utilizzare un sostituto select con dropdowns ci dovrebbe essere possibile disattivare la discesa ma ancora presentare il valore dell'elemento di selezione nascosto. Ma potresti anche usare campi nascosti ...
Oppure aggiungi davvero un campo nascosto con il valore selezionato nel caso in cui l'elemento di selezione sia disabilitato.
<input type="hidden" name="whatever">
<select name="whatever">
Se il campo nascosto ha lo stesso nome di selezione, il valore selezionato del select dovrebbe sovrascrivere il valore inviato del campo nascosto (per esempio quando il campo di selezione è dinamicamente abilitato con js). E se la selezione è disabilitata, viene inviato il valore del campo nascosto. Non sono sicuro sull'ordine di ciò che viene inviato per primo.
$(document).ready(function(){$('select option:not(:selected)').attr('disabled',true);});
questa soluzione dovrebbe funzionare anche (almeno con js abilitato). Disabilita ogni opzione non selezionata. E quindi l'opzione selezionata viene inviata e non può essere modificata.
C'è una domanda simile e già risposto html-form-readonly-select-tag-input
Non credo che nessun plug-in di selezione selezionato abbia questo comportamento, in quanto l'elemento standard 'select' non lo supporta. Se ne hai bisogno, probabilmente dovrai codificarlo da solo o, come dici tu, disabilitare l'elemento e utilizzare un input nascosto. –