Eu tenho este HTML:
<input type="text" name="textField" />
<input type="submit" value="send" />
Como posso fazer algo assim:
- Quando o campo de texto estiver vazio, o envio deverá ser desativado (desativado = "desativado").
- Quando algo é digitado no campo de texto para remover o atributo desativado.
- Se o campo de texto ficar vazio novamente (o texto é excluído), o botão enviar deverá ser desativado novamente.
Eu tentei algo assim:
$(document).ready(function(){
$('input[type="submit"]').attr('disabled','disabled');
$('input[type="text"]').change(function(){
if($(this).val != ''){
$('input[type="submit"]').removeAttr('disabled');
}
});
});
... mas não funciona. Alguma ideia?
javascript
jquery
html
forms
kmunky
fonte
fonte
Respostas:
O problema é que o evento de mudança é acionado apenas quando o foco é desviado da entrada (por exemplo, alguém clica na entrada ou guia nela). Tente usar o keyup:
fonte
input id="loginButton" type="submit" name="Submit" value="Login" disabled>
mostrará um botão desabilitado com classes desabilitadas de css.fonte
Esta pergunta tem 2 anos, mas ainda é uma boa pergunta e foi o primeiro resultado do Google ... mas todas as respostas existentes recomendam configurar e remover o atributo HTML (removeAttr ("disabled")) "disabled", que não é a abordagem correta. Há muita confusão sobre atributo versus propriedade.
HTML
O "desativado" na
<input type="button" disabled>
marcação é chamado de atributo booleano pelo W3C .HTML vs. DOM
Citar:
https://stackoverflow.com/a/7572855/664132
JQuery
Relacionado:
Relevante:
Sumário
Para alterar propriedades do DOM, como o estado [...] desabilitado dos elementos do formulário, use o .prop () método .
( http://api.jquery.com/attr/ )
Quanto à desativação na alteração da parte da pergunta: existe um evento chamado "input", mas o suporte ao navegador é limitado e não é um evento jQuery, portanto, o jQuery não fará com que funcione. O evento de mudança funciona de maneira confiável, mas é acionado quando o elemento perde o foco. Então, pode-se combinar os dois (algumas pessoas também escutam as teclas e colam).
Aqui está um trecho de código não testado para mostrar o que quero dizer:
fonte
Para remover o atributo desativado, use
e para adicionar o uso de atributo desativado,
Desfrutar :)
fonte
ou para nós que não gostam de usar o jQ para todas as pequenas coisas:
fonte
eric, seu código parece não funcionar para mim quando o usuário digita o texto e exclui todo o texto. eu criei outra versão se alguém experimentou o mesmo problema. aqui vão vocês:
fonte
Funcionará assim:
Verifique se há um atributo 'desativado' no seu HTML
fonte
Aqui está a solução para o campo de entrada de arquivo .
Para desativar um botão de envio para o campo de arquivo quando um arquivo não for escolhido, ative depois que o usuário escolher um arquivo para carregar:
Html:
fonte
você também pode usar algo como isto:
aqui está um exemplo ao vivo
fonte
Para o login do formulário:
Javascript:
fonte
Se o botão for um estilo de jQuery (com .button ()), será necessário atualizar o estado do botão para que as classes corretas sejam adicionadas / removidas depois de remover / adicionar o atributo desativado.
fonte
As respostas acima não abordam também a verificação de eventos de recortar / colar com base no menu. Abaixo está o código que eu uso para fazer as duas coisas. Observe que a ação realmente acontece com um tempo limite, porque os eventos de corte e do passado são acionados antes da mudança, portanto, o tempo limite dá um tempo para que isso aconteça.
fonte
Solução de baunilha JS. Funciona para um formulário inteiro e não apenas para uma entrada.
Em questão, selecione a tag JavaScript.
Formulário HTML:
Alguma explicação:
Nesse código, adicionamos o evento keyup no formulário html e, em todas as teclas pressionadas, verificamos todos os campos de entrada. Se pelo menos um campo de entrada que temos estiver vazio ou contiver apenas caracteres de espaço, atribuímos o valor verdadeiro à variável desativada e desabilite o botão de envio.
Se você precisar desativar o botão enviar até que todos os campos de entrada obrigatórios sejam preenchidos - substitua:
com:
em que required_inputs já é declarado array contendo apenas os campos de entrada necessários.
fonte
Podemos simplesmente ter if & else .se supor que sua entrada está vazia, podemos ter
caso contrário, podemos transformar falso em verdadeiro
fonte
Desativar:
$('input[type="submit"]').prop('disabled', true);
Habilitar:
$('input[type="submit"]').removeAttr('disabled');
O código de ativação acima é mais preciso do que:
Você pode usar os dois métodos.
fonte
Eu tive que trabalhar um pouco para fazer isso se encaixar no meu caso de uso.
Eu tenho um formulário em que todos os campos devem ter um valor antes de enviar.
Aqui está o que eu fiz:
Obrigado a todos por suas respostas aqui.
fonte
Consulte o código abaixo para ativar ou desativar o botão Enviar
fonte
dê uma olhada neste trecho do meu projeto
$(this).attr('disabled', 'disabled');
fonte
Todos os tipos de solução são fornecidos. Então, eu quero tentar uma solução diferente. Simplesmente será mais fácil se você adicionar um
id
atributo nos seus campos de entrada.Agora aqui está o seu
jQuery
fonte
Espero que o código abaixo ajude alguém .. !!! :)
fonte