Come posso verificare se un utente ha selezionato qualcosa da un <select>
campo in HTML5?
Vedo <select>
che non supporta il nuovo required
attributo ... allora devo usare JavaScript? O c'è qualcosa che mi manca? : /
Come posso verificare se un utente ha selezionato qualcosa da un <select>
campo in HTML5?
Vedo <select>
che non supporta il nuovo required
attributo ... allora devo usare JavaScript? O c'è qualcosa che mi manca? : /
Risposte:
Obbligatorio : avere il primo valore vuoto - le opere necessarie su valori vuoti
Prerequisiti : correggere html5 DOCTYPE e un campo di input denominato
<select name="somename" required>
<option value="">Please select</option>
<option value="one">One</option>
</select>
Come da documentazione (l'elenco e il grassetto sono miei)
L'attributo richiesto è un attributo booleano.
Se specificato, all'utente verrà richiesto di selezionare un valore prima di inviare il modulo.Se un elemento selezionato
- ha un attributo obbligatorio specificato,
- non è stato specificato un attributo multiplo,
- e ha una dimensione di visualizzazione di 1 (non avere SIZE = 2 o più - omettilo se non necessario);
- e se il valore del primo elemento opzione nell'elenco di opzioni dell'elemento select (se presente) è la stringa vuota (cioè presente come
value=""
),- e il nodo padre di quell'elemento opzione è l'elemento select (e non un elemento optgroup),
quindi quell'opzione è l'opzione etichetta segnaposto dell'elemento select.
L' <select>
elemento supporta l' required
attributo, come da specifica:
Quale browser non lo rispetta?
(Ovviamente, devi convalidare sul server comunque, poiché non puoi garantire che gli utenti abbiano JavaScript abilitato.)
È possibile utilizzare l' selected
attributo per l'elemento opzione per selezionare una scelta per impostazione predefinita. È possibile utilizzare l' required
attributo per l'elemento select per assicurarsi che l'utente selezioni qualcosa.
In Javascript, puoi controllare la selectedIndex
proprietà per ottenere l'indice dell'opzione selezionata oppure puoi controllare la value
proprietà per ottenere il valore dell'opzione selezionata.
Secondo la specifica HTML5, selectedIndex
"restituisce l'indice del primo elemento selezionato, se presente, oppure −1 se non è presente alcun elemento selezionato. E value
" restituisce il valore del primo elemento selezionato, se presente, o la stringa vuota se presente nessun elemento selezionato. "Quindi, se selezionatoIndex = -1, allora sai che non hanno selezionato nulla.
<button type="button" onclick="displaySelection()">What did I pick?</button>
<script>
function displaySelection()
{
var mySelect = document.getElementById("someSelectElement");
var mySelection = mySelect.selectedIndex;
alert(mySelection);
}
</script>
-1
. Spiacenti, non ho chiarito prima i commenti.
Sì, funziona:
<select name="somename" required>
<option value="">Please select</option>
<option value="one">One</option>
</select>
devi mantenere vuota la prima opzione.
<form action="">
<select required>
<option selected disabled value="">choose</option>
<option value="red">red</option>
<option value="yellow">yellow</option>
<option value="green">green</option>
<option value="grey">grey</option>
</select>
<input type="submit">
</form>
Rende vuoto il valore del primo elemento della casella di selezione.
Quindi ogni volta che pubblichi il FORM ottieni un valore vuoto e, in questo modo, sapresti che l'utente non ha selezionato nulla dal menu a discesa.
<select name="user_role" required>
<option value="">-Select-</option>
<option value="User">User</option>
<option value="Admin">Admin</option>
</select>
Devi impostare l' value
attributo di option
sulla stringa vuota:
<select name="status" required>
<option selected disabled value="">what's your status?</option>
<option value="code">coding</option>
<option value="sleep">sleeping</option>
</select>
select
restituirà il value
selezionato option
al server quando l'utente preme submit
sul form
. Un vuoto value
equivale a un text
input vuoto -> solleva il required
messaggio.
L'attributo value specifica il valore da inviare a un server quando viene inviato un modulo.
prova questo, funzionerà, ho provato questo e questo funziona.
<!DOCTYPE html>
<html>
<body>
<form action="#">
<select required>
<option value="">None</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<input type="submit">
</form>
</body>
</html>
Funziona perfettamente se il valore della prima opzione è null. Spiegazione: HTML5 leggerà un valore nullo all'invio del pulsante. Se non è nullo (attributo valore), si presume che il valore selezionato non sia nullo, quindi la validazione avrebbe funzionato, cioè controllando se ci fossero dati nel tag opzione. Pertanto non produrrà il metodo di convalida. Tuttavia, suppongo che l'altro lato diventi chiaro, se l'attributo value è impostato su null ie (value = ""), HTML5 rileverà un valore vuoto sulla prima o piuttosto l'opzione selezionata di default dando così il messaggio di validazione. Grazie per avermelo chiesto. Felice di aiutare. Sono contento di sapere se l'ho fatto.
In html5 puoi fare usando l'espressione completa:
<select required="required">
Non so perché la breve espressione non funzioni, ma prova questa. Risolverà.
Prova questo
<select>
<option value="" style="display:none">Please select</option>
<option value="one">One</option>
</select>
Puoi farlo anche in modo dinamico con JQuery
Impostare richiesto
$("#select1").attr('required', 'required');
Rimuovi richiesto
$("#select1").removeAttr('required');
selectedIndex
.