Foi o que encontrei pelo Firebug no Firefox.
É o mesmo em outros navegadores?
Se sim, qual o motivo disso?
Foi o que encontrei pelo Firebug no Firefox.
É o mesmo em outros navegadores?
Se sim, qual o motivo disso?
Respostas:
Sim, todos os navegadores não devem enviar as entradas desativadas, pois são somente leitura.
Mais informações (seção 17.12.1)
Definições de atributo
disabled [CI] Quando definido para um controle de formulário, esse atributo booleano desabilita o controle para entrada do usuário. Quando definido, o atributo desativado tem os seguintes efeitos em um elemento:
- Os controles desativados não recebem foco.
- Os controles desativados são ignorados na navegação por guias.
- Controles desativados não podem ser bem-sucedidos.
Os seguintes elementos suportam o atributo desativado: BUTTON, INPUT, OPTGROUP, OPTION, SELECT e TEXTAREA.
Este atributo é herdado, mas as declarações locais substituem o valor herdado.
Como os elementos desabilitados são renderizados depende do agente do usuário. Por exemplo, alguns agentes do usuário "desabilitam" os itens de menu, os rótulos dos botões, etc.
Neste exemplo, o elemento INPUT está desativado. Portanto, ele não pode receber entrada do usuário nem seu valor será enviado com o formulário.
<INPUT disabled name="fred" value="stone">
Nota. A única maneira de modificar dinamicamente o valor do atributo desativado é através de um script.
<input type="hidden">
elemento com o mesmo nome / valor da entrada desativada.
disabled
entrada não enviará dados.
Use o readonly
atributo:
<input type="text" readonly />
readonly
funciona, apenas certifique-se de passar "name" attr para a entrada.
Você pode usar três coisas para imitar os desativados:
readonly
Atributo HTML: (para que o valor presente na entrada possa ser usado no envio do formulário. Além disso, o usuário não pode alterar o valor da entrada)
CSS: 'pointer-events':'none'
(impedindo o usuário de clicar na entrada)
HTML: tabindex="-1"
(bloqueando o usuário para navegar até a entrada do teclado)
Eles não são enviados, porque é o que diz a especificação W3C .
17.13.2 Controles bem-sucedidos
Um controle bem-sucedido é "válido" para envio. [recorte]
- Os controles desativados não podem ser bem-sucedidos.
Em outras palavras, a especificação diz que os controles desativados são considerados inválidos e não devem ser enviados.
Disabled
controles não podem ser bem-sucedidos e um controle bem-sucedido é "válido" para envio. Esse é o motivo pelo qual os controles desativados não são enviados com o formulário.
Existem dois atributos, a saber, readonly
e disabled
que podem gerar uma entrada semi-somente leitura. Mas há uma pequena diferença entre eles.
<input type="text" readonly />
<input type="text" disabled />
readonly
atributo desabilita o texto de entrada e os usuários não podem mais alterá-lo.disabled
atributo não apenas tornará seu texto de entrada desativado (imutável), mas também não poderá ser enviado .Abordagem jQuery (1):
$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);
Abordagem jQuery (2):
$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");
Abordagem JavaScript:
document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;
PS disabled
e readonly
são atributos html padrão. prop
introduzido com jQuery 1.6
.
os controles selecionados ainda podem ser clicados, mesmo no atributo readonly
se você ainda deseja desativar o controle, mas deseja que seu valor seja postado. Você pode considerar criar um campo oculto. com o mesmo valor que seu controle.
então crie um jquery, em select change
$('#your_select_id').change(function () {
$('#your_hidden_selectid').val($('#your_select_id').val());
});