$input.disabled = true;
ou
$input.disabled = "disabled";
Qual é o caminho padrão? E, por outro lado, como você habilita uma entrada desativada?
$input.disabled = true;
ou
$input.disabled = "disabled";
Qual é o caminho padrão? E, por outro lado, como você habilita uma entrada desativada?
Respostas:
jQuery 1.6+
Para alterar a
disabled
propriedade, você deve usar a.prop()
funçãojQuery 1.5 e abaixo
A
.prop()
função não existe, mas.attr()
é semelhante:Defina o atributo desativado.
Para ativar novamente, o método adequado é usar
.removeAttr()
Em qualquer versão do jQuery
Você sempre pode confiar no objeto DOM real e provavelmente é um pouco mais rápido que as outras duas opções se estiver lidando apenas com um elemento:
A vantagem de usar os métodos
.prop()
ou.attr()
é que você pode definir a propriedade para vários itens selecionados.Nota: Na versão 1.6, existe um
.removeProp()
método que se parece muitoremoveAttr()
, mas NÃO DEVE SER USADO em propriedades nativas como o'disabled'
trecho da documentação:Na verdade, duvido que haja muitos usos legítimos para esse método, adereços booleanos são feitos de tal maneira que você deve configurá-los para false em vez de "removê-los" como seus equivalentes "atributo" na versão 1.5.
fonte
':input'
, não apenas'input'
. O último seleciona apenas elementos <input> reais.input,textarea,select,button
é um pouco melhor de usar do que:input
-:input
como um seletor é bastante ineficiente porque ele precisa selecionar um*
loop sobre cada elemento e filtrar por tagname - se você passar os 4 seletores de tagname diretamente, será MUITO mais rápido. Além disso,:input
não é um seletor CSS padrão, então os ganhos de desempenho que são possíveis dequerySelectorAll
se perdeu.removeProp("disabled")
estava causando o problema de "propriedade sendo removida completamente e não sendo adicionada novamente", como apontado por @ThomasDavidBaker, no caso de alguns navegadores como o Chrome, enquanto estava funcionando bem em alguns como o Firefox. Deveríamos realmente ter cuidado aqui. Sempre use em.prop("disabled",false)
vez dissoApenas para novas convenções e para torná-lo adaptável no futuro (a menos que as coisas mudem drasticamente com o ECMA6 (????)):
e
fonte
$(document).on('event_name', '#your_id', function() {...})
invés de$('#your_id').on('event_name', function() {...})
. Conforme descrito na documentação do jQuery .on (), o primeiro usa a delegação e escuta todos osevent_name
eventos que chegam à bolhadocument
e verifica se há uma correspondência#your_id
. O último ouve especificamente$('#your_id')
apenas os eventos e isso escala melhor.Às vezes, você precisa desativar / ativar o elemento do formulário, como entrada ou área de texto. O Jquery ajuda você a fazer isso facilmente com a configuração do atributo desativado como "desativado". Por exemplo:
Para habilitar o elemento desativado, você precisa remover o atributo "disabled" desse elemento ou esvaziar sua string. Por exemplo:
consulte: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
fonte
ou
fonte
Você pode colocar isso em algum lugar global no seu código:
E então você pode escrever coisas como:
fonte
prop
e nãoattr
adisabled
propriedade para que ela funcione corretamente (assumindo o jQuery 1.6 ou superior).attr
? Eu uso o código acima em alguns projetos e, tanto quanto eu me lembro ele funciona okchecked
propriedade de caixas de seleção. Usarattr
não dará o mesmo resultado.Se você deseja apenas inverter o estado atual (como o comportamento de um botão de alternância):
fonte
Existem várias maneiras de usá-los. Você pode ativar / desativar qualquer elemento :
Abordagem 1
Abordagem 2
Se você estiver usando o jQuery 1.7 ou versão superior, use prop (), em vez de attr ().
Se você deseja ativar qualquer elemento, basta fazer o oposto do que você fez para desativá-lo. No entanto, o jQuery fornece outra maneira de remover qualquer atributo.
Abordagem 1
Abordagem 2
Abordagem 3
Novamente, se você estiver usando o jQuery 1.7 ou versão superior, use prop (), em vez de attr (). Isso é. É assim que você ativa ou desativa qualquer elemento usando o jQuery.
fonte
Atualização para 2018:
Agora não há necessidade de jQuery e tem sido um tempo desde que
document.querySelector
oudocument.querySelectorAll
(de vários elementos) fazer quase exatamente o mesmo trabalho como $, mais os mais explícitosgetElementById
,getElementsByClassName
,getElementsByTagName
Desativando um campo da classe "input-checkbox"
ou vários elementos
fonte
Você pode usar o método jQuery prop () para desativar ou ativar o elemento do formulário ou controlar dinamicamente usando o jQuery. O método prop () requer o jQuery 1.6 e superior.
Exemplo:
fonte
Desativar:
Habilitar:
fonte
Desative true para o tipo de entrada:
fonte
$("input[name=method]").prop('disabled', true);
isso funciona para mim
fonte
Eu usei a resposta @gnarf e a adicionei como função
Então use assim
fonte
2018, sem JQuery (ES6)
Desativar tudo
input
:Desativar
input
comid="my-input"
A questão é com JQuery, é apenas para sua informação.
fonte
Abordagem 4 (esta é a extensão da resposta do codificador selvagem )
fonte
Use assim,
fonte
fonte
No jQuery Mobile:
Para desativar
Para ativar
fonte