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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top