2013-11-22 14 views
8
<select name="name"> 
    <option>Select an option.</option><br/> 
    <option>A</option><br/> 
    <option>B</option><br/> 
    <option>C</option><br/> 
</select> 

HTML5 ha required="required" e questo è il tipo di effetto desiderato con il menu a discesa sopra. Non voglio che l'utente selezioni "Seleziona un'opzione", solo "A", "B" o "C". So che potrei impostare un valore predefinito di A e rimuovere completamente l'opzione "Seleziona un'opzione", ma non voglio che gli utenti facciano clic a caso senza leggere le opzioni disponibili.La prima opzione del menu a discesa non è un'opzione; forzare l'utilizzo di altre opzioni

Questo può essere fatto con HTML e/o JS?

+3

solo curioso, perché hai le interruzioni di linea all'interno tra le opzioni? – Jerahmeel

+0

L'attributo 'obbligatorio' HTML5 significa che l'utente deve selezionare * qualche * opzione. La domanda sembra riguardare il non consentire una delle opzioni. –

+0

@ JukkaK.Korpela, si. Intendevo rendere necessarie le opzioni A, B e C, ma solo come esempio di ciò che volevo. – gator

risposta

9

edit: questo codice è solo per costringere gli utenti a scegliere un'opzione valida, al posto di quello di default ... convalida per inviare/modificare/etc dovrebbero essere aggiunti

Si dovrebbe solo disabilitare il primo opzione e impostarla come selezionata per impostazione predefinita:

<select name="name"> 
    <option disabled="disabled" selected="selected">Select an option.</option> 
    <option>A</option> 
    <option>B</option> 
    <option>C</option> 
</select> 

Questo dovrebbe fare il trucco, demo qui http://jsfiddle.net/pixshatterer/Q27HX/

+0

Cheers, sapevo che c'era una soluzione semplice che utilizza solo HTML e nessun JS. Hai aiutato molto! – gator

+1

Ehi @riista grazie! – pixshatterer

+1

Questo non consentirà 'Seleziona un'opzione' da inviare se il menu a discesa non viene modificato? – Lee

3

Basta dare display:none all'elemento option e disabled=disabled. Grazie alla @pixshatterer

http://jsfiddle.net/Xh9nh/4/

EDIT: Put visibility:hidden per errore.

+0

Questa non è la migliore idea, gli utenti saranno comunque in grado di selezionare "seleziona un'opzione come opzione" come visto qui: http://jsfiddle.net/Xh9nh/2/ – agconti

+0

@agconti, fatto un errore, controlla la risposta modificata . Metti "visibilità: nascosta" per errore. –

+0

@Parto. Bella idea Al primo clic funziona benissimo, ma se continui a fare clic intorno a esso puoi comunque selezionare "seleziona un'opzione". Non sono sicuro del perché questo è il caso però. – agconti

2

Se si utilizza il plugin di convalida (qui: http://jqueryvalidation.org/) e aggiornare il <select> fornire value su ogni <option>, se impedirà modulo di presentazione, se si seleziona il valore "vuoto":

<select name="name" required> 
    <option value="">Select an option...</option> 
    <option value="A">A</option> 
    <option value="B">B</option> 
    <option value="C">C</option> 
</select> 

Vale anche la pena osservando che gli unici elementi figlio validi di un <select> è o <optgroup> o <option>, quindi rimuovere quelli <br /> s.

Se jQuery non è un'opzione, si può sempre aggiungere un onclick alla selezione o un onsubmit alla forma e fare un rapido controllo su una stringa vuota (o qualsiasi altra cosa si imposta il valore di default a).

+0

concordato con @Tieson menzionato, quelli
sono markup non validi all'interno di un tag selezionato – pixshatterer

Problemi correlati