Domanda

Ho un campo SELECT a selezione multipla di cui non voglio che l'utente finale possa modificare il valore.

Per motivi di interfaccia utente, vorrei poterlo fare senza utilizzare l'attributo disattivato = "true".Ho provato a utilizzare onmousedown, onfocus, onclick e impostandoli su sfocatura o restituzione false, ma senza successo.

Si può fare o sto cercando di fare l'impossibile?

È stato utile?

Soluzione

So che hai detto che non vuoi, ma in realtà penso che usare the disabled l'attributo è una soluzione migliore:

<select multiple="multiple">
    <option value="volvo" selected="true" disabled="disabled">Volvo</option>
    <option value="saab" disabled="disabled">Saab</option>
    <option value="opel" disabled="disabled">Opel</option>
    <option value="audi" disabled="disabled">Audi</option>
</select>

Se necessario, puoi sempre dare il select UN class e modellalo con i CSS.Questa soluzione funzionerà in tutti i browser indipendentemente dalle capacità di scripting.

Altri suggerimenti

Potresti farlo con un onchange evento?

<select onfocus="this.oldIndex=this.selectedIndex" onchange="this.selectedIndex=this.oldIndex">

La soluzione migliore sarebbe scambiare le opzioni all'interno della casella di selezione.Se hai solo una risposta in quella casella, non importa se è cliccabile.

Tuttavia, proverei a trovare un altro modo per farlo poiché sembra che causerebbe frustrazione a un utente.Immagina questo scenario utente:

  1. "Guarda, una casella di selezione di opzioni."
  2. clic
  3. "Hrm, perché non ha funzionato?"
  4. clic
  5. clic!
  6. "Questa stupida cosa è rotta, non tornerò mai più qui."

Se sostituisci la selezione con testo HTML, raggiunge lo stesso obiettivo.Questo è un compito abbastanza semplice per la maggior parte dei principali framework Javascript.

@Jack e @17 di 26, buon punto, ma l'utente finale si aspetterà che la casella di selezione sia disabilitata in modo che la confusione non dovrebbe essere un problema.

Avrei dovuto essere più chiaro sul motivo per cui non potevo semplicemente disabilitare il controllo.

L'applicazione che lo utilizzerà dovrà disabilitare la selezione delle opzioni ed è necessario che il controllo "bloccato" mantenga comunque l'aspetto dei normali controlli del modulo.

Prova questo trigger.

<select multiple onchange="this.selectedIndex=this.selectedIndex">
<option>1</option>
<option>2</option>
</select>

C'è una recente nuova aggiunta a CSS3 Compatibile al 95%. con tutti i browser attuali tranne Opera Mini, chiamato pointer-events.In parole povere, puoi "disabilitare" l'azione predefinita su a SELECT o qualsiasi altro elemento, ed essere comunque in grado di eseguire eventi specifici su di esso...

Puoi vedere l'articolo di Chris Coyier su di loro su inserisci la descrizione del collegamento qui.

È più vicino a quello che stai cercando...Mi dispiace di non aver potuto fornire nessuno dei miei esempi di codice...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top