Pergunta

No meu exemplo, eu estou lidando com um menu drop-down, por exemplo:

<select name="foo" id="bar">
  <option disabled="disabled" selected="selected">Select an item:</option>
  <option>an item</option>
  <option>another item</option>
</select>

Claro, isso é muito sem sentido, mas eu estou querendo saber se qualquer rígidas de comportamento é definido.Opera eficazmente rejeita a 'selecionado' atributo e seleciona o próximo item na lista.Todos os outros navegadores aparecem para permitir que ele, e ele permanecerá selecionado.

Atualização: Para esclarecer, eu estou especialmente interessada na seleção inicial.Eu estou lidando com um desses 'Selecione um item:'-tipo drop-downs, caso em que a primeira opção é realmente um rótulo e uma acção ocorre onchange().Este é bastante bem "progressivamente aperfeiçoada", em que um botão de submit está presente, e só removidos através de JavaScript.Se o "select..." opção foram removidos, o que, em seguida, foram para se tornar o primeiro item seria não ser seleccionáveis.Estamos apenas a exclusão de onchange drop downs completamente, ou se o "select..." opção de ser selecionada, apenas com nenhum efeito?

Foi útil?

Solução

Em resposta à atualização na questão, eu diria que o 'rótulo' opção deve ser selecionada, mas quer fazer é não fazer nada no envio ou via JavaScript, não permitir que o formulário seja submetido, sem um valor a ser selecionado (assumindo que é um campo de preenchimento obrigatório).

A partir de um usablilty ponto de vista que eu ia sugerir a realização de ambos, de maneira que todas as bases estão cobertas.

Outras dicas

O HTML especificações são um pouco vago (ie.completamente faltam) com relação a esta estranha combinação.Eles dizem que um elemento de formulário com o atributo disabled conjunto não deve ser bem-sucedido, para que ele realmente não pode ser selecionado.

O navegador pode muito bem torná-lo para que fique selecionado, mas não deve mostrar-se em dados Lançados.Parece que Opera deu certo para mim.

As especificações HTML estado que tanto selecionados & deficientes estão disponíveis opções para o <option> elemento, mas não especifica o que deve acontecer no caso de um conflito.No secção controlos desactivados ele diz

Quando definido, o atributo disabled tem os seguintes efeitos sobre o elemento:

  • Controlos desactivados não receber o foco.
  • Deficiência controles são ignorados na navegação tabulada.
  • Controlos desactivados não pode ser bem-sucedida.

ele também diz que

Como desativado elementos são renderizados depende do agente do usuário.Por exemplo, alguns agentes do usuário "cinza" itens de menu desativado, rótulos de botão, etc.Neste exemplo, o elemento de ENTRADA é desativado.Portanto, ele não pode receber entrada do usuário nem o seu valor ser enviado com o formulário.

Enquanto esse caso específico não especificados, a minha leitura deste diz que o processamento real de um 'selecionado' 'disabled' elemento é deixado para o navegador.Contanto que o usuário não é possível selecioná-lo, em seguida, ele está funcionando como padrão.Ele diz que um script pode agir sobre o elemento, então é possível que o Javascript para definir uma opção desactivada, conforme selecionado (ou desativar uma opção seleccionada).Isso não é contrário aos padrões, mas na submissão do formulário, a opção do valor não poderia ser o valor selecionado.Selecione lista (eu assumo) têm de ter um valor vazio neste caso.

De acordo com a Especificação HTML 4.01, deficiência é um atributo padrão para o elemento de opção, mas o comportamento é, provavelmente, indeterminado, de acordo com a norma (leia mais informações sobre o elemento select e as opções de elementos.Aqui é uma parte que eu acho que podem lançar luz sobre Ópera razões para a sua realização:

Quando definido, o atributo disabled tem os seguintes efeitos sobre o elemento:
* Controlos desactivados não receber o foco.
* Disabled controles são ignorados na navegação tabulada.
* Controlos desactivados não pode ser bem-sucedida.

Assim, é muito provável que esta é apenas uma daquelas coisas onde a especificação é vago o suficiente para permitir que ambas as interpretações.Este é o tipo de idiossincrasia que torna a programação para a web tão divertido e gratificante.:P

Estamos apenas a decisão fora "onchange" drop downs completamente, ou deve o "selecione..." opção de ser selecionada, apenas com efeito?

"onchange" drop-downs são malvistos por normas mais obcecado por tipos.

Eu normalmente faria algumas validação do lado do cliente."Por favor seleccione um item da lista suspensa" tipo de coisa.i.e.

se o "select..." opção de ser selecionada, apenas com nenhum efeito?

Então, eu só disse "Sim" para o seu a ou B questão.:/ Sorry!

infelizmente, isso realmente não importa o que deve acontecer, porque o IE não suporta o atributo disabled em opções período.

http://webbugtrack.blogspot.com/2007/11/bug-293-cant-disable-options-in-ie.html

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