2015-09-29 7 views
9

ho un bootstrap selezionare con readonly="true" ma posso ancora cambiare l'opzione selezionata.Twitter Bootstrap selezionare sola lettura ancora in grado di modificare le opzioni

Ho bisogno il comportamento disabled="true", ma quando uso questo il prescelto non viene presentata.

ho bisogno di una combinazione dei due, l'opzione selezionata non può essere modificato, ma il prescelto deve essere presentata.

ho potuto utilizzare campi nascosti, ma speravo in una soluzione più facile.

+0

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. –

risposta

4

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

+0

grazie Ti ho usato l'ultima soluzione: $ ('seleziona [sola lettura] opzione: non (: selezionato)'). Attr ('disabilitato', vero); – Ruben

+0

puoi anche evidenziare il tuo link all'altro post, le risposte sono più complete delle mie, forse il mio è un duplicato? – Ruben

6

ho incontrato un problema simile e quello che faccio è quando l'evento onSubmit modulo viene licenziato rimuovere gli attributi disabili in quanto il browser non inviare gli attributi disabili al server.

$('form').submit(function() { $('[disabled]').removeAttr('disabled'); }) 

Come hai detto, l'unica altra opzione che ho trovato è quella di trovare i valori per gli input nascosti.

1

A pageload aggiungere disabile di sola lettura

$('[readonly]').prop("disabled", true); 

Prima Invia rimuovere disabilitato

$('[readonly]').prop("disabled", false); 

Nota da Jquery doc:

A partire da jQuery 1.6, il metodo .attr() restituisce undefined per gli attributi che non sono stati impostati. Per recuperare e modificare proprietà DOM come lo stato selezionato, selezionato o disabilitato degli elementi del modulo, utilizzare il metodo .prop().

Problemi correlati