Quali valori possono essere visualizzati in & # 8220; selezionato & # 8221; attributo dell'opzione & # 8220; & # 8221; etichetta?
Domanda
Ho un markup simile al seguente:
<select>
<option selected="selected">Apple</option>
<option selected="">Orange</option>
</select>
In questo caso, " Orange " viene visualizzato come l'elemento selezionato. Mi sarei aspettato di rendere vuoto l'attributo selezionato
per annullarne gli effetti. C'è un modo per scrivere questo senza semplicemente tralasciare l'attributo?
Soluzione
Browser diversi possono trattare questo attributo in modo diverso. Secondo la documentazione MSDN (per Internet Explorer):
Per selezionare un elemento in HTML, non lo è necessario impostare il valore di Attributo SELEZIONATO su vero. Il semplice presenza del set di attributi SELECTED il suo valore è vero.
In Firefox e Safari questo funziona:
<option selected='false' />
Da quello che posso dire guardando lo standard WC3 ufficiale per HTML4, il caso supportato è solo:
<option selected='selected' />
Dovrai emettere l'attributo in modo selettivo o utilizzare JavaScript per controllare quale elemento è inizialmente selezionato.
Altri suggerimenti
Specifiche HTML5
https://www.w3.org /TR/html51/sec-forms.html#the-option-element
L'attributo del contenuto selezionato è un attributo booleano.
http://www.w3.org/TR/html5 /infrastructure.html#boolean-attributes :
La presenza di un attributo booleano su un elemento rappresenta il valore vero e l'assenza dell'attributo rappresenta il valore falso.
Se l'attributo è presente, il suo valore deve essere una stringa vuota o un valore che corrisponde a una corrispondenza maiuscole / minuscole ASCII per il nome canonico dell'attributo, senza spazi bianchi iniziali o finali.
Conclusione
I seguenti sono validi, equivalenti e veri :
<option selected />
<option selected="" />
<option selected="selected" />
<option selected="SeLeCtEd" />
I seguenti sono non validi :
<option selected="0" />
<option selected="1" />
<option selected="false" />
<option selected="true" />
L'assenza dell'attributo è l'unica sintassi valida per false :
<option />
Raccomandazione
Se ti interessa scrivere XHTML valido, usa selected = " selezionato "
, poiché < opzione selezionata >
non è valida e altre alternative sono meno leggibili. Altrimenti, usa < opzione selezionata >
poiché è più corta.
l'unico valore consentito per l'attributo selezionato in XHTML è " selezionato " quindi se vuoi che il tuo markup sia conforme a XHTML e funzioni su tutti i browser, lasciarlo fuori è l'unica scelta per renderlo non selezionato
No, l'esistenza dell'attributo selezionato indica al browser che è l'elemento selezionato. Qualsiasi cosa tra virgolette viene ignorata.
Modifica: ciò che potresti fare (con Javascript) è cercare i tag di opzione con selezionato = " " e rimuovere da essi l'attributo selezionato.
In HTML (al contrario di XHTML) un semplice attributo selezionato
, senza alcun valore, funziona benissimo:
<option selected>Apple</option>
<option>Orange</option>
In XHTML (incluso XHTML5) hai bisogno di un valore, che dovrebbe anche essere selezionato
:
<option selected="selected">Apple</option>
<option>Orange</option>
Funziona bene anche in HTML.
Questo è generalmente il caso dei valori booleani in (X) HTML. Il modo di impostarli su false è ometterli del tutto. L'impostazione dei valori di true
e false
può funzionare, ma non è standard.
Nota che per un elenco di opzioni, la prima è selezionata per impostazione predefinita, quindi in questo caso non è affatto necessaria.
Secondo w3schools , dovresti impostarlo come: selected = " selezionato " ;. Questo ti dice quale opzione è inizialmente selezionata e ti consente di impostarla tramite lo script in un secondo momento.
Non ci sono altri valori validi diversi da " selezionato " per quell'attributo. ( http://www.w3schools.com/TAGS/att_option_selected.asp )
È meglio impostare la proprietà selectElement.selectedIndex da Javascript o rimuovere del tutto l'attributo.