Preciso desabilitar as entradas primeiro e depois clicar no link para habilitá-las.
Isto é o que eu tentei até agora, mas não funciona.
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">
jQuery:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').removeAttr("disabled")
});
Isso me mostra true
e, em seguida, false
mas nada muda para as entradas:
$("#edit").click(function(event){
alert('');
event.preventDefault();
alert($('.inputDisabled').attr('disabled'));
$('.inputDisabled').removeAttr("disabled");
alert($('.inputDisabled').attr('disabled'));
});
javascript
jquery
disabled-input
fatiDev
fonte
fonte
Respostas:
Sempre use o
prop()
método para ativar ou desativar elementos ao usar o jQuery (veja abaixo o porquê).No seu caso, seria:
Exemplo de jsFiddle aqui.
Basicamente,
prop()
deve ser usado quando obter ou definir propriedades (comoautoplay
,checked
,disabled
erequired
entre outros).Ao usar
removeAttr()
, você remove completamente odisabled
próprio atributo - enquantoprop()
apenas define o valor booleano subjacente da propriedade como false.Embora o que você queira fazer possa ser feito usando
attr()
/removeAttr()
, isso não significa que deve ser feito (e pode causar um comportamento estranho / problemático, como neste caso).As seguintes extrações (extraídas da documentação do jQuery para prop () ) explicam esses pontos com mais detalhes:
fonte
attr
vsprop
nas caixas de seleção: w3.org/TR/html5/forms.html#concept-input-checked-dirty, exceto pela mágica interna da solução alternativa do jQuery..prop()
foi executado no elemento apontado porthis
(this.prop("disabled", false)
, mas estar em um retorno de chamada era vinculativo ao elemento errado, por isso tive que fazer avar that = this
solução comum . Tentar brincar com.apply()
/.call()
não estava funcionando bem; não sei . por isso verifique com umconsole.log(this)
se estiver definido para o seu objeto desejado, antes de chamarthis.prop(...)
disabled
propriedade desabilitará o elemento. Por exemplo, tendo um<button disabled="false"></button>
não ativará o botão, a propriedade deverá ser removida. Ao chamar o$('button').prop('disabled', false);
jQuery, você removerá a propriedade para você, como observei neste código (inspecione para ver a remoção da propriedade).http://jsfiddle.net/ZwHfY/
fonte
para remover o uso de atributo desativado,
e para adicionar o uso de atributo desativado,
Desfrutar :)
fonte
Use assim,
HTML:
JS:
fonte
<a>
, no qual.prop('disabled', false)
não funciona. Eu mudei para um<button>
e ele funciona agoraEu acho que você está tentando alternar o estado desativado, no caso de bruxa, você deve usar este ( desta pergunta ):
Aqui está um violino de trabalho.
fonte
Pensei que você pode configurar facilmente
fonte
Este foi o único código que funcionou para mim:
Note que é
removeProp
e nãoremoveAttr
.Estou usando
jQuery 2.1.3
aqui.fonte
2018, sem JQuery
Eu sei que a pergunta é sobre JQuery: esta resposta é apenas para sua informação.
fonte
Esta pergunta menciona especificamente o jQuery, mas se você deseja fazer isso sem o jQuery, o equivalente no JavaScript vanilla é:
fonte
elem.removeAttr('disabled');
trabalha para mim