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.
@ Allisone: Firefox e Chrome parecem obedecer a isso (entrada desativada NÃO é enviada). Não tentei em outros navegadores.
Adrien Seja
1
@JohnKugelman porque o mesmo nome? o deficiente não será submetido qualquer forma .. pode muito bem dar o verdadeiro nome para o oculto e usar um diferente para o disabled
@FrankFang, Ok, mas quando estou transmitindo dados para o modelo blade do coletivo Laravel. Isso não vai funcionar. não pode enviar dados dessa maneira.
ssi-anik
O @ ssi-anik readonlyfunciona, apenas certifique-se de passar "name" attr para a entrada.
BenNov 10/04
26
Você pode usar três coisas para imitar os desativados:
readonlyAtributo 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)
Disabledcontroles 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.
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.
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)
fonte
<input type="hidden">
elemento com o mesmo nome / valor da entrada desativada.disabled
entrada não enviará dados.Use o
readonly
atributo:Fonte aqui
fonte
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)fonte
Eles não são enviados, porque é o que diz a especificação W3C .
Em outras palavras, a especificação diz que os controles desativados são considerados inválidos e não devem ser enviados.
fonte
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.fonte
Existem dois atributos, a saber,
readonly
edisabled
que podem gerar uma entrada semi-somente leitura. Mas há uma pequena diferença entre eles.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):
Abordagem jQuery (2):
Abordagem JavaScript:
PS
disabled
ereadonly
são atributos html padrão.prop
introduzido comjQuery 1.6
.fonte
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
fonte