jQuery .attr (“desativado”, “desativado”) não funciona no Chrome

Não tenho certeza porque isso não está funcionando.

Quando as pessoas clicam no botão “editar” do meu aplicativo, os campos de texto desativados se tornam editáveis:

$("#bewerken").click(function(e) { $("input[disabled='disabled']").removeAttr('disabled'); }); 

Desejo então desabilitar os campos de texto novamente quando o usuário salva; Eu tenho este código ligado ao meu botão salvar:

 $("#save_school_changes").click(function(e) { //stuff $.ajax({ type: "POST", url: "/school/save_changes", data: { //stuff }, success: function(data) { $("#feedback_top").html("

" + data['message'] + "

").slideDown('slow').delay(2000).slideUp(); $("input[type='text']").attr('disabled', 'disabled'); } }); e.preventDefault(); });

Tanto quanto eu sei, isso deve desativar os campos de texto novamente. No entanto, isso não parece estar funcionando no Chrome. Ele funciona no Firefox. Ainda não tive a oportunidade de testar no IE ou no Safari. Existe alguma maneira de fazer isso funcionar no Chrome também? Muito obrigado!

Se você estiver usando o jQuery <1.6, faça o seguinte:

 jQuery("input[type='text']").attr("disabled", 'disabled'); 

Se você estiver usando o jQuery 1.6+:

 jQuery("input[type='text']").prop("disabled", true); 

Veja esta questão: .prop () vs .attr () para referências por que.

Ou você pode tentar isto:

 $('input:text').attr("disabled", 'disabled'); 

veja aqui para informações sobre :text

Para mim, nenhuma dessas respostas funcionou, mas finalmente encontrei uma que funcionou.

Eu precisava disso para IE-

 $('input:text').attr("disabled", 'disabled'); 

Eu também tive que adicionar isso para o Chrome e Firefox –

 $('input:text').AddClass("notactive"); 

e isto –

  

É um post antigo, mas nenhuma dessas soluções funcionou para mim, então estou postando minha solução se alguém achar isso útil.

Eu acabei de ter o mesmo problema.

No meu caso, o controle que eu precisava desabilitar era um controle de usuário com menus suspensos que eu poderia desabilitar no IE, mas não no Chrome.

minha solução foi desabilitar cada object filho, não apenas o usercontrol, com esse código:

 $('#controlName').find('*').each(function () { $(this).attr("disabled", true); }) 

Está trabalhando para mim no chrome agora.

Tente $("input[type='text']").attr('disabled', true);

Aqui:
http://jsbin.com/urize4/edit

Visualização ao vivo
http://jsbin.com/urize4/

Você deve usar ” readonly ” como:

 $("input[type='text']").attr("readonly", "true"); 

Você já tentou com prop () ?

Bem prop () parece funcionar para mim .

se você estiver removendo todos os atributos desativados da input, então por que não apenas:

 $("input").removeAttr('disabled'); 

Então, depois do sucesso do ajax:

 $("input[type='text']").attr('disabled', true); 

Certifique-se de usar remover o atributo desativado antes de enviar ou não enviará esses dados. Se você precisar enviá-lo antes de mudar, precisará usar somente leitura.

Meu problema com isso era que o elemento que usava o attr desativado precisava ser definido como um elemento de formulário, tipo de input .ie para que ele funcionasse. Ambos trabalharam com attr () e prop (), mas escolheram o último para manutenção futura.