2009-11-23 3 views
17

Je n'arrive pas à obtenir removeAttr pour fonctionner, j'utilise l'exemple que j'ai vu sur le site jQuery. Fondamentalement onclick J'ajoute l'attribut pour désactiver un champ (qui fonctionne très bien) mais quand l'utilisateur clique de nouveau il devrait activer le champ en question. J'ai utilisé des alertes pour m'assurer que le bloc else est déclenché, alors je sais que ce n'est pas le cas.jQuery remove attribute

code:

$('#WindowOpen').click(function (event) { 
    event.preventDefault(); 
    $('#forgot_pw').slideToggle(600); 

    if('#forgot_pw') { 
    $('#login_uname, #login_pass').attr('disabled','disabled'); 
    } else { 
    $('#login_uname, #login_pass').removeAttr('disabled'); 
    } 
}); 

Merci.

+1

if ('# forgot_pw') sera toujours exécuté. Je suppose que c'est une faute de frappe? – mtyaka

+2

Pour référence ultérieure, jQuery recommande d'utiliser la méthode '.prop()' (http://api.jquery.com/prop/) lors de l'obtention et de la définition de propriétés d'entrée telles que disabled. Il est plus compatible avec plusieurs navigateurs selon la version de jQuery que vous utilisez et le navigateur avec lequel vos utilisateurs naviguent. – jasonmerino

+1

duplication possible de [Supprimer l'attribut désactivé à l'aide de JQuery?] (Http://stackoverflow.com/questions/13626517/remove-disabled-attribute-using-jquery) – user2381114

Répondre

17

Tout bien utilisé ceci:

$('#WindowOpen').toggle(
    function() 
    { 
     $('#login_uname, #login_pass').attr("disabled","disabled");  
    }, 
    function() 
    { 
     $('#login_uname, #login_pass').removeAttr("disabled");  
    }); 
5

Votre problème est que la ligne de code suivante sera toujours évaluée à true.

if('#forgot_pw') 

essayez de remplacer avec

if($('#forgot_pw').attr('disabled')) 
+0

Même problème, je l'obtiens pour désactiver mais pas réactiver. – Tarek

4
$('#forgot_pw').attr('disabled', false); 

devrait travailler pour vous.