Os valores que podem aparecer no atributo “selecionado” da tag “opção”?
Pergunta
Eu tenho um pouco de marcação semelhante ao seguinte:
<select>
<option selected="selected">Apple</option>
<option selected="">Orange</option>
</select>
Neste caso, programas de "laranja" como o item selecionado. Eu teria esperado tornando o atributo em branco selected
iria desfazer seus efeitos. Existe uma maneira de escrever isso sem simplesmente deixando o fora atributo?
Solução
navegador diferente pode tratar este atributo diferente. De acordo com a documentação do MSDN (para Internet Explorer):
Para selecionar um item em HTML, não é necessário para definir o valor do SELECIONADOS atributo para true. O mero presença do conjunto de atributos SELECTED seu valor para true.
No Firefox e Safari isso não funciona:
<option selected='false' />
De que eu posso dizer, olhando para o padrão WC3 oficial para HTML4, caso suportado apenas:
<option selected='selected' />
Você nem precisa de emitir seletivamente o atributo, ou o uso JavaScript para controlar qual item está inicialmente selecionada.
Outras dicas
HTML5 especificação
https://www.w3.org /TR/html51/sec-forms.html#the-option-element
O atributo conteúdo selecionado é um atributo booleano.
http://www.w3.org/TR/html5 /infrastructure.html#boolean-attributes :
A presença de um atributo booleano em um elemento representa o verdadeiro valor, ea ausência do atributo representa o valor falso.
Se o atributo está presente, seu valor deve ser tanto uma string vazia ou um valor que é uma correspondência de maiúsculas e minúsculas ASCII para o nome canônico do atributo, com nenhum espaço em branco iniciais ou finais.
Conclusão
A seguir, são válido, equivalente e verdadeiro :
<option selected />
<option selected="" />
<option selected="selected" />
<option selected="SeLeCtEd" />
A seguir, são inválido :
<option selected="0" />
<option selected="1" />
<option selected="false" />
<option selected="true" />
A ausência do atributo é a sintaxe válida apenas para false :
<option />
Recomendação
Se você se preocupa escrever XHTML, o uso selected="selected"
, desde <option selected>
é inválido e outras alternativas são menos legível. Else, basta usar <option selected>
como é mais curto.
O valor só é permitido para o atributo selecionado na XHTML é " selecionado " então se você quiser a sua marcação para ser compatível com XHTML e trabalhar em todos os navegadores deixando-o para fora é a única opção para torná-lo não selecionado
Não, a existência do atributo selecionado diz ao navegador que é o item selecionado. Qualquer coisa dentro das aspas é ignorado.
Edit:. O que você poderia fazer (com Javascript) é olhar para tags de opção com selecionado = "", e remover o atributo selecionado a partir deles
Em HTML (ao contrário de XHTML) um atributo selected
simples, sem valor em tudo, bem funciona:
<option selected>Apple</option>
<option>Orange</option>
Em XHTML (incluindo XHTML5) você precisa de um valor, que também deve ser selected
:
<option selected="selected">Apple</option>
<option>Orange</option>
Isso também funciona bem em HTML.
Este é geralmente o caso para valores booleanos em (X) HTML. A maneira de defini-los como falso é omiti-los completamente. Definir valores de true
e false
podem funcionar, mas não é padrão.
Note que para uma lista de opções, a primeira é selecionada por padrão, então isso não é necessário em tudo neste caso.
De acordo com a w3schools , você deve defini-lo como: selected = "selected ". Isto diz-lhe qual opção é inicialmente selecionado, e permite que você configurá-lo através de script mais tarde.
Não existem outras que não "selecionado" para esse atributo valores válidos. ( http://www.w3schools.com/TAGS/att_option_selected.asp )
Você é melhor fora definindo a propriedade selectElement.selectedIndex de Javascript, ou remover o atributo por completo.